java中byte[]和int之间的转换
文章目录
转换前,需要先对byte[]认识清楚,所以不得不提到大端Big-endian和小端Little-endian的概念。
java中一个int整数占4个byte,我们先假设它只占2个byte的情况。假设x的值为16bit宽的数0x1234,那么0x12为高字节,0x34为低字节。
x在Little-endian模式CPU内存中的存放方式如下:
|
|
x在Big-endian模式CPU内存中的存放方式为:
|
|
把int转为byte[]的方法是,先通过&运算让int中只保留我们需要的那个字节,然后作右移运算把这个数变为一个字节。本质上,是把一个整数分成几部分,存到一个数组中。假设我们使用Little-endian模式,即低字节在前面,高字节在后面。比如低字节是bytes[0],代码如下:
|
|
把byte[]转为int的方法是,还是假设Little-endian模式,低字节在前面。在下面的代码中,低字节bytes[0]先左移0位即可,然后通过异或运算加上其它字节即可。这里假设byte[]的长度不超过4。本质上,我们是把一个字节数组合并为一个整数。
|
|
文章作者 huijian142857
上次更新 2015-12-15