在字节数组中怎样用6个字节表示一个数啊 请问高手,在字节数组中怎样用6个字节表示一个数啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public void analysis(byte[] data) { int a = (int) data[0] + (int) (data[1] << 8);}如a是由两个字节构成的,所以可以用上面的写法。 那 6 个字节,也采用上面的方法移不行吗?需要采用 long 型数据,int 只有 4 个字节。 6个字节写成这样行吗?int a = (int)data[0] + (int)data[1]<<8+(int)data[2]<<16+(int)data[3]<<32+(int)data[4]<<64+(int)data[5]<<128 怎么移那么多,每隔一次增加 8 位long a = (long)data[0] + (long)data[1] << 8 + (long)data[2] << 16 + (long)data[3] << 24 ... 那如果没有强调有高低位怎么办啊,拿两个字节来说有高低位的如下int a = (int)data[0] + (int)data[1]<<8;没有高低位怎么写啊? [0] 放高八位,还是 [5] 放高八位,这个很重要,需要事先约定好的,否将将会直接影响到结果的。public class PI { public static void main(String[] args) { byte[] bytes = "123456".getBytes(); for (byte b : bytes) { System.out.printf("%08d ", Integer.parseInt(Integer.toBinaryString(b))); } System.out.println(); for(int i=0; i<bytes.length; i++) { System.out.printf("%8s ", "bytes[" + i + "]"); } System.out.println(); System.out.println(); long a = 0L; // [0] 存放高八位,[5] 存放低八位 for (int i = bytes.length - 1; i >= 0; i--) { a |= ((long) bytes[i]) << ((bytes.length - 1 - i) * 8); } System.out.println(a); System.out.println(); a = 0L; // [0] 存放高八位,[5] 存放低八位 for (int i = 0; i < bytes.length; i++) { a |= ((long) bytes[i]) << (i * 8); } System.out.println(a); }} 上面代码的注释写错了,上面的作废掉,看下面的:public class Test { public static void main(String[] args) { byte[] bytes = "123456".getBytes(); for (byte b : bytes) { System.out.printf("%08d ", Integer.parseInt(Integer.toBinaryString(b))); } System.out.println(); for(int i=0; i<bytes.length; i++) { System.out.printf("%8s ", "bytes[" + i + "]"); } System.out.println(); System.out.println(); long a = 0L; // [0] 存放高八位,[5] 存放低八位 for (int i = 0; i < bytes.length; i++) { a |= ((long) bytes[i]) << ((bytes.length - 1 - i) * 8); } System.out.println(a); System.out.println(); a = 0L; // [0] 存放低八位,[5] 存放高八位 for (int i = 0; i < bytes.length; i++) { a |= ((long) bytes[i]) << (i * 8); } System.out.println(a); }} 求java数据库连接和登录按钮的方法 看看谁能有更简单的方法,大牛们出招吧!!!!!! swing 下面的程序没有错误为什么运行不了啊 ? 没有显示框框 判断键盘输入是否合法的问题 如何获取上个季度的第一天和最后一天 为什么把一个带有中文的字符串输入到一个File中,中文不能正常显示呢,都是乱码. 一个关于java.lang.NoClassDefFoundError的问题? 用Java能不能做车牌识别系统? 想精通java基础求书籍推荐 请教达人: java中new int[0]是什么意思 怎样提高文件流的读写速度问题
int a = (int) data[0] + (int) (data[1] << 8);
}如a是由两个字节构成的,所以可以用上面的写法。
int a = (int)data[0] + (int)data[1]<<8+(int)data[2]<<16+(int)data[3]<<32+
(int)data[4]<<64+(int)data[5]<<128
int a = (int)data[0] + (int)data[1]<<8;
没有高低位怎么写啊?
public static void main(String[] args) {
byte[] bytes = "123456".getBytes(); for (byte b : bytes) {
System.out.printf("%08d ", Integer.parseInt(Integer.toBinaryString(b)));
}
System.out.println();
for(int i=0; i<bytes.length; i++) {
System.out.printf("%8s ", "bytes[" + i + "]");
} System.out.println();
System.out.println();
long a = 0L;
// [0] 存放高八位,[5] 存放低八位
for (int i = bytes.length - 1; i >= 0; i--) {
a |= ((long) bytes[i]) << ((bytes.length - 1 - i) * 8);
}
System.out.println(a);
System.out.println();
a = 0L;
// [0] 存放高八位,[5] 存放低八位
for (int i = 0; i < bytes.length; i++) {
a |= ((long) bytes[i]) << (i * 8);
}
System.out.println(a);
}
}
public static void main(String[] args) {
byte[] bytes = "123456".getBytes(); for (byte b : bytes) {
System.out.printf("%08d ", Integer.parseInt(Integer.toBinaryString(b)));
}
System.out.println();
for(int i=0; i<bytes.length; i++) {
System.out.printf("%8s ", "bytes[" + i + "]");
} System.out.println();
System.out.println();
long a = 0L;
// [0] 存放高八位,[5] 存放低八位
for (int i = 0; i < bytes.length; i++) {
a |= ((long) bytes[i]) << ((bytes.length - 1 - i) * 8);
}
System.out.println(a);
System.out.println();
a = 0L;
// [0] 存放低八位,[5] 存放高八位
for (int i = 0; i < bytes.length; i++) {
a |= ((long) bytes[i]) << (i * 8);
}
System.out.println(a);
}
}