我想用此行中的变量替换固定值:

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);


但是,您的值ecee超出了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),
};

10-07 13:51
查看更多