将字符串转换为字节,然后插入字节数组

时间:2011-11-16 04:00:21

标签: java string casting bytearray byte

我有一个十六进制字符串,st =“9e”。我需要将其转换为字节并将其插入字节数组中。但我无法从字符串转换为字节。我使用过像 1)Byte.valueOf(str); 2)新的字节(str); 3)尝试将“0X”附加到str然后转换为byte。  这些都给出了错误。

你能告诉我如何从一个字符串转换为字节。

5 个答案:

答案 0 :(得分:1)

您是否尝试过使用String.getBytes()?它接收一个字符串并将其输出为byte[]。希望有所帮助。

答案 1 :(得分:0)

这样的东西
            String x = "2A"; 
    int intValue = Integer.parseInt(x, 16);
    byte b = (byte) intValue;

9e 对于字节来说太大了,因为它等于字节大于128的值,而字节可以容纳。

无符号字节可以容纳0-255但是java只有符号字节,可以容纳 -128到127 ,所以你必须自己适当地映射范围

答案 2 :(得分:-1)

答案 3 :(得分:-1)

您是否尝试过以下代码。

String st = "9e";
byte [] value = st.getBytes();

答案 4 :(得分:-1)

你可能正在寻找这样的东西:

import java.util.*;
import java.lang.*;

class Main
{
        public static void main (String[] args)
        {
                String hex = "9e";
                int i = Integer.parseInt(hex, 16);
                System.out.println(Arrays.toString(intToBytes(i)));
        }

        private static byte[] intToBytes(int n) 
        {
                byte[] bytes = new byte[4];
                for(int i = 0; i < 4; i++)
                {
                        bytes[i] = (byte) (n | 0);
                        n >>= 8;
                }
                return bytes;
        }
}

由于字节是有符号整数类型,因此您需要将它们转换为无符号值。