Byte数组存储问题
Byte[]b=newByte[10];b[0]=(byte)0x01;b[1]=(byte)0x10;b[2]=(byte)0x00;b[3]=(byte)0xCA;现...
Byte[] b=new Byte[10];
b[0]=(byte)0x01;
b[1]=(byte)0x10;
b[2]=(byte)0x00;
b[3]=(byte) 0xCA;
现在我通过算法求出一个十六进制的数str存到b[4]里面,通过b[4]= Byte.decode("0x"+Integer.toHexString(Integer.parseInt(str));方法实现。
但是有个问题就是,如果str没有超过byte范围完全能存进去,超过就存不进去,会报错,可是直接写入没问题例如b[3].所以,我怎么才能存进去了,只能存进Byte里面。。 展开
b[0]=(byte)0x01;
b[1]=(byte)0x10;
b[2]=(byte)0x00;
b[3]=(byte) 0xCA;
现在我通过算法求出一个十六进制的数str存到b[4]里面,通过b[4]= Byte.decode("0x"+Integer.toHexString(Integer.parseInt(str));方法实现。
但是有个问题就是,如果str没有超过byte范围完全能存进去,超过就存不进去,会报错,可是直接写入没问题例如b[3].所以,我怎么才能存进去了,只能存进Byte里面。。 展开
1个回答
展开全部
首先你的方法用的有问题
所有的数字转换根本上是调用Integer.parseInt(String s, int radix)
所以你可以直接用Byte.parseByte(String s, int radix),
String 参数直接传0xCA或者拼接下,
0xCA 而你的这个数值转换后其实数值超过了byte范围
直接用(byte) 0xCA 其实是把int强转了,实际值是负数。
如果你的里面有超过byte的范围的值Byte.parseByte(String s, int radix)方法就不适用,会报错
你可以用Integer.parseInt(String s, int radix)
但是这里的String 就直接是CA这中参数,radix是进制。
所以给你的用法就是b[i] = (byte) Integer.parseInt(str, 16);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询