java中int类型和byte[]数组之间的转换

来源:互联网 发布:最小二乘法c语言程序 编辑:程序博客网 时间:2024/06/10 20:10

int和byte[]之间的转换用的比较多的情况是在网络编程中,socket在传输过程中多以byte[]的形式出现

int转byte[]

java里int是32位即4个byte,所以要把int转成byte数组要用长度4的byte[]接收,
b[0]   =   (byte)   (n   &   0xff);  表示接收int末8位数据
b[1]   =   (byte)   (n   >>   8   &   0xff);   先将9-16位的数据右移到末8位,

再与11111111做与运算过滤掉高位,仍然保留末8位数据,这是为了获取int n的9-16位的byte值。
后面的原理同上,都是为了将要取值的位数先移动到末8位,再取值

/** * int转byte数组 *  * @param n * @return */private static byte[] intToByteLH(int n) {byte[] b = new byte[4];b[0] = (byte) (n & 0xff);b[1] = (byte) (n >> 8 & 0xff);b[2] = (byte) (n >> 16 & 0xff);b[3] = (byte) (n >> 24 & 0xff);return b;}

byte[]转int

public static int byte2int(byte[] res) {// 一个byte数据左移24位变成0x??000000,再右移8位变成0x00??0000int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00) // | 表示安位或| ((res[2] << 24) >>> 8) | (res[3] << 24);return targets;}


0 0
原创粉丝点击