您的位置:首页 > 编程语言 > Java开发

Java byte数组按位转化为long类型

2017-11-03 16:53 501 查看
本方法适用于(高位在前,低位在后)的顺序

public static void main(String[] args) {
byte[] l = new byte[]{(byte) 0xe7, (byte) 0xf3, (byte) 0x90, (byte) 0x54,
(byte) 0x39, (byte) 0x6e, (byte) 0x11, (byte) 0x7c,
(byte) 0x01, (byte) 0xe7, (byte) 0x70, (byte) 0x3c,
(byte) 0x79, (byte) 0x14, (byte) 0xb5, (byte) 0x67};

System.out.println(getLong(l,4));
}

/**
* @param data 数组
* @param num 多少个byte相组合成一个数字
* */
public static long getLong(byte[] data, int num) {
long count = 0;
for (int i = 0; i < data.length / num; i++) {
int offset = i * num;
long val = 0;
for (int j = 0; j < num; j++) {
long _val =  ((long)(data[offset + num - j - 1] & 0xFF) << j * 8);
if (val == 0) {
val = _val;
} else {
val = val | _val;
}
}
count = count + val;
}
return count;
}


输出:6918358899

本方法适用于(高位在前,低位在后)的顺序

4000
public static void main(String[] args) {
byte[] l = new byte[]{(byte) 0xe7, (byte) 0xf3, (byte) 0x90, (byte) 0x54,
(byte) 0x39, (byte) 0x6e, (byte) 0x11, (byte) 0x7c,
(byte) 0x01, (byte) 0xe7, (byte) 0x70, (byte) 0x3c,
(byte) 0x79, (byte) 0x14, (byte) 0xb5, (byte) 0x67};

System.out.println(getLong(l,4)); }

/**
* @param data 数组
* @param num 多少个byte相组合成一个数字
* */
public static long getLong(byte[] data, int num) {
long count = 0;
for (int i = 0; i < data.length / num; i++) {
int offset = i * num;
long val = 0;
for (int j = 0; j < num; j++) {
long _val =  ((long)(data[offset + j] & 0xFF) << j * 8);
if (val == 0) {
val = _val;
} else {
val = val | _val;
}
}
count = count + val;
}
return count;
}


输出:6918358899
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: