java byte转double_Java 中字节数组和基本类型之间的相互转换

我不谈框架,谈框架掉价做项目时碰到需要在基本类型数据和字节数组相互转换的问题,但我查了基础类型的包装类,似乎没有可用的方法;使用 IO 流又不够装X,所以干脆搞个工具类,里面写些相互转换的方法,后续使用起来也比较方便。工具类源码:import java.io.*;/*** 此工具类用于字节数组和基本数据类型之间的互相转换* java中储存数据的方式是大端字节序,高位字节在前,低位字节在后,这是人类...
摘要由CSDN通过智能技术生成

5088c86ca344

我不谈框架,谈框架掉价

做项目时碰到需要在基本类型数据和字节数组相互转换的问题,但我查了基础类型的包装类,似乎没有可用的方法;使用 IO 流又不够装X,所以干脆搞个工具类,里面写些相互转换的方法,后续使用起来也比较方便。

工具类源码:

import java.io.*;

/**

* 此工具类用于字节数组和基本数据类型之间的互相转换

* java中储存数据的方式是大端字节序,高位字节在前,低位字节在后,这是人类读写数值的习惯方法。

* 以下所有的操作都是针对的大端字节序

*/

public class ByteArrayUtils {

//分析int转byte[]

public static byte[] testIntToByteArray(int value) {

//int占4个字节

byte[] bytes = new byte[4];

/**

* 使用>>位移运算符,并强转byte依次取得高位字节

* 由于是大端字节序,高位到低位是从左到右

* 例如 int num = 0x060A0B02,高位到低位依次是:06 -> 0A -> 0B -> 02

* 这个int类型变量的值的16进制为:06 0A 0B 02

*/

//右移24位后,返回值00 00 00 06,强转之后变成06

bytes[0] = (byte) (value >> 24);

//右移16位后,返回值00 00 06 0A,强转之后变成0A

bytes[1] = (byte) (value >> 16);

//右移16位后,返回值00 06 0A 0B,强转之后变成0B

bytes[2] = (byte) (value >> 8);

//06 0A 0B 02,强转之后变成02

bytes[3] = (byte) value;

return bytes;

}

//分析byte[]转int

public static int testByteArrayToInt(byte[] bytes) {

/**

* byte类型的数字要&0xFF再赋值给int类型,

* 其本质原因就是想保持二进制补码(负数用补码表示)的一致性

*/

int ff = 0xFF; //00 00 00 FF

//假设字节数组为 06 0A 0B 02

//左移24位之后,h0为06 00 00 00

int h0 = (bytes[0] & ff) << 24;

//左移16位之后,h1为00 0A 00 00

int h1 = (bytes[1] & ff) << 16;

//左移8位之后,h2为00 00 0B 00

int h2 = (bytes[2] & ff) << 8;

//h3为00 00 00 02

int h3 = bytes[3] & ff;

int value = h0 | h1 | h2 | h3;

return value;

}

/**

* short转byte[]

* @param value

* @return byte[]

*/

public static byt

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值