字符串到字节然后字节[] 0xformat

时间:2012-09-12 09:28:25

标签: java string bytearray byte

我遇到通过string-> byte-> byte []

进行转换的问题

到目前为止我做了什么:

     double db = 1.00;
     double ab = db*100;
     int k = (int) ab;

     String aa = String.format("%06d", k);

     String first = aa.substring(0,2);``
     String second = aa.substring(2,4);
     String third = aa.substring(4,6);

     String ff = "0x"+first;
     String nn = "0x"+second;
     String yy = "0x"+third;

我想将这些字节写入byte []。我的意思是:

byte[] bytes = new byte[]{(byte) 0x02, (byte) 0x68, (byte) 0x14,
    (byte) 0x93, (byte) 0x01, ff,nn,yy};

按此顺序并使用0x进行转换。任何帮助都很受欢迎。

此致 阿里

2 个答案:

答案 0 :(得分:1)

您可以使用Byte.decode()

  

将字符串解码为字节。接受以下语法给出的十进制,十六进制和八进制数字:

DecodableString:
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits

下面的代码将打印1011,其值为0XA0XB

    byte[] temp = new byte[2];
    temp[0] = Byte.decode("0xA");
    temp[1] = Byte.decode("0xB");
    System.out.println(temp[0]);
    System.out.println(temp[1]);

答案 1 :(得分:1)

如我所见,这里的主要问题是如何将表示六进制数的2字符串转换为字节类型。 Byte类有一个静态方法parseByte(String s,int radix),它可以使用你想要的基数将String解析为数字(在本例中为16)。下面是一个如何解析并将结果保存在字节数组中的示例:

public static void main(String [] args){
    System.out.println(Arrays.toString(getBytes("0001020F")));
}


public static byte[] getBytes(String str) {

    byte [] result = new byte[str.length() / 2]; //assuming str has even number of chars...

    for(int i = 0; i < result.length; i++){
        int startIndex = i * 2;
        result[i] = Byte.parseByte(str.substring(startIndex, startIndex + 2), 16);
    }
    return result;
}