byte转化成int
int i = (arrB[3] << 24) + (arrB[2] << 16) + (arrB[1] << 8) + arrB[0];int转化成byte
arrB[3] = (byte)(i>>24);
arrB[2] = (byte)(i>>16);
arrB[1] = (byte)(i>>8);
arrB[0] = (byte)i; 有的数据能正确转化如:2031616,但是有的数据不能正确转化如:66650112是不是因为有符号,无符号引起的问题,应该怎么修改,请高手指点一下。
int i = (arrB[3] << 24) + (arrB[2] << 16) + (arrB[1] << 8) + arrB[0];int转化成byte
arrB[3] = (byte)(i>>24);
arrB[2] = (byte)(i>>16);
arrB[1] = (byte)(i>>8);
arrB[0] = (byte)i; 有的数据能正确转化如:2031616,但是有的数据不能正确转化如:66650112是不是因为有符号,无符号引起的问题,应该怎么修改,请高手指点一下。
解决方案 »
- 跪求算法!!!
- 简易计算器自己不会儿,请指教~~~
- Socket与ServerSocket之间的数据转发
- JSP连接SQL Server 2000的问题
- 那位大神 这是一个阶乘的Java程序 可不可以帮我优化一下 使得100的阶乘用的时间少点,小弟刚学 不才 可以帮我一下
- java初学者的困惑
- 如何获取系统下cpu,内存,硬盘使用情况
- jdom中的Element是表示节点的意思吗?Element和node有什么不同亚
- 再问一下这个问题, 请大家给点意见,先谢了.
- java(JBuilder)如何做报表并打印?
- 输出 byte 数组时,怎么有了 "-" ,是什么意思呢
- struts 结构中怎么来用cookie???
arrB[2] = (byte)((i>>>16)& 0xFF);
arrB[1] = (byte)((i>>>8)& 0xFF);
arrB[0] = (byte)(i& 0xFF);
2031616能成功,66650112就不能。
我想是不是
byte转化成int
int i = (arrB[3] << 24) + (arrB[2] << 16) + (arrB[1] << 8) + arrB[0];
这里有问题。
int arrB[] = new int[4];
arrB[0] = ( (integer >>> 24) & 0xFF);
arrB[1] = ( (integer >>> 16) & 0xFF);
arrB[2] = ( (integer >>> 8) & 0xFF);
arrB[3] = ( (integer >>> 0) & 0xFF);
int i = (arrB[0] << 24) + (arrB[1] << 16) + (arrB[2] << 8) + arrB[3];
if(integer==i){
System.out.println(integer + ":\t" + i);
}else{
System.err.println(integer + ":\t" + i);
}
}你看看这个就明白了,这样写就没错
问题还在符号位的处理