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里面。。
展开
 我来答
特摄圈路人1k
2017-03-14 · 超过29用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:10.4万
展开全部

首先你的方法用的有问题 


所有的数字转换根本上是调用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);

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式