如何在Java中将十六进制字符串转换为字节值

bri*_*ian 22 java hex byte

我有一个String数组.我想将其转换为字节数组.我使用Java程序.例如:

String str[] = {"aa", "55"};
Run Code Online (Sandbox Code Playgroud)

转换成:

byte new[] = {(byte)0xaa, (byte)0x55};
Run Code Online (Sandbox Code Playgroud)

我能做什么?

Lio*_*ion 54

String str = "Your string";

byte[] array = str.getBytes();
Run Code Online (Sandbox Code Playgroud)

  • 除非使用该方法的重载版本之一(例如`String#getBytes(Charset charset))或`String #getBytes(String charsetName)`. (3认同)

Wiz*_*art 15

看一下这个样本我猜你的意思是字符串数组实际上是一个字节的HEX表示数组,不是吗?

如果是,那么对于每个字符串项,我将执行以下操作:

  1. 检查字符串是否只包含2个字符
  2. 这些字符在'0'..'9'或'a'..'f'间隔(考虑他们的情况)
  3. 将每个字符转换为相应的数字,减去代码值'0'或'a'
  4. 构建一个字节值,其中第一个char是较高位,第二个char是较低位.例如

    int byteVal = (firstCharNumber << 4) | secondCharNumber;
    
    Run Code Online (Sandbox Code Playgroud)


Par*_*ani 11

将字符串转换为字节数组:

byte[] theByteArray = stringToConvert.getBytes();
Run Code Online (Sandbox Code Playgroud)

将字符串转换为字节:

 String str = "aa";

 byte b = Byte.valueOf(str);
Run Code Online (Sandbox Code Playgroud)

  • 输入从"A"到"F"的值时,它给出了"NumberFormatException" (2认同)

Mit*_*ran 9

你可以尝试类似的东西:

String s = "65";

byte value = Byte.valueOf(s);
Run Code Online (Sandbox Code Playgroud)

Byte.ValueOf()对String数组中的所有元素使用该方法将它们转换为字节值.

  • 它不起作用.java.lang.NumberFormatException:无法将'aa'解析为整数 (7认同)