Java中如何将两个无符号的byte转换为一个有符号的short? 5
byteb1的取值是0至255,byteb2的取值是0至255,将这两个byte的二进制和在一起,b1在前,b2在后,也就是1111111111111111,一个shor...
byte b1的取值是0至255,byte b2的取值是0至255,将这两个byte的二进制和在一起,b1在前,b2在后,也就是11111111 11111111,一个short类型就是16位,我现在需要的是有范围的
/**
* 将data字节型数据转换为0~255 (0xFF 即BYTE)。
* @param data
* @return
*/
public static int getUnsignedByte(byte data){
return data&0x0FF;
}
public static void main(String[] args) {
byte b1 = (byte)127;
byte b2 = (byte)255;
System.out.println((short)(b1*256+getUnsignedByte(b2)));
}
这是我的解决方法,还请赐教:
当b1=127,b2=255时,此时值最大,为32767,
当b1=128,b2=0时,此时值最小,为-32768 展开
/**
* 将data字节型数据转换为0~255 (0xFF 即BYTE)。
* @param data
* @return
*/
public static int getUnsignedByte(byte data){
return data&0x0FF;
}
public static void main(String[] args) {
byte b1 = (byte)127;
byte b2 = (byte)255;
System.out.println((short)(b1*256+getUnsignedByte(b2)));
}
这是我的解决方法,还请赐教:
当b1=127,b2=255时,此时值最大,为32767,
当b1=128,b2=0时,此时值最小,为-32768 展开
展开全部
这个是可以进行转换和复原的,举例:
short x = -32752;//定义一个short
byte high = (byte) (0x00FF & (x>>8));//定义第一个byte
byte low = (byte) (0x00FF & x);//定义第二个byte
System.out.println(high);//打印第一个byte值
System.out.println(low);//打印第二个byte值
// 复原
short z = (short)(((high & 0x00FF) << 8) | (0x00FF & low));
System.out.println(z);//输出的结果就是-32752
short x = -32752;//定义一个short
byte high = (byte) (0x00FF & (x>>8));//定义第一个byte
byte low = (byte) (0x00FF & x);//定义第二个byte
System.out.println(high);//打印第一个byte值
System.out.println(low);//打印第二个byte值
// 复原
short z = (short)(((high & 0x00FF) << 8) | (0x00FF & low));
System.out.println(z);//输出的结果就是-32752
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询