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是不是因为有符号,无符号引起的问题,应该怎么修改,请高手指点一下。
解决方案 »
- Spring定时器报错了
- 编程中遇到一个问题,急需解决
- SCJP的一道考题,求解释
- java 连接外网
- 请教:java程序中super()的使用问题
- 各位大侠帮我看看jar文件怎么打开
- sun one studio 是什么东东?在JAVA。SUN。COM上找不到下载。是不是就是NetBeans IDE ?
- 在JBuilde中将java代码编译成本地代码后,是否就可以脱离JRE环境
- Jbuilder5中的jTable简单问题,20分!!!
- Android访问Webservices出错 求大神!
- 输出 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);
}
}你看看这个就明白了,这样写就没错
问题还在符号位的处理