我想用此行中的变量替换固定值:baData = new byte[] {(byte)0xec, (byte)0xee};
(byte)0xec和(byte)0xee是要用变量替换的值。
现在,我拥有的变量当前为字符串,例如:
str1 =“ ec”;和str2 =“ ee”;
如何正确地将这些字符串转换为字节并告诉Java否更改信息?例如,我想要baData将ec和ee作为十六进制值,但是到目前为止,我找不到任何有效的方法。
完成后,如何重新编写第一行以放置变量而不是固定值?
最佳答案
通常,如果您有一个包含十六进制的字符串,并且想将其解析为一个字节,则可以使用Byte.parseByte
byte b = Byte.parseByte(str1, 16);
但是,您的值
ec
和ee
超出了Java符号字节的允许范围(-128
至+127
),因此这将为您提供数字格式异常。为了解决这个问题,您可以将其解析为一个int,然后将其转换为一个字节
byte b = (byte) Integer.parseInt("ec", 16);
这将为您提供一个字节值
-20
(带符号的十进制)或236
(无符号的十进制),十六进制为0xec
。为了您的目的,您可以使用:
baData = new byte[] {
(byte) Integer.parseInt(str1, 16),
(byte) Integer.parseInt(str2, 16),
};