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

Java 字符串到字节,然后字节[]0xformat,java,string,bytearray,byte,Java,String,Bytearray,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

我在通过字符串->字节->字节[]转换时遇到问题

到目前为止我所做的:

     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[] bytes = new byte[]{(byte) 0x02, (byte) 0x68, (byte) 0x14,
    (byte) 0x93, (byte) 0x01, ff,nn,yy};
按此顺序,并用0x浇铸。任何帮助都是非常感激的

问候,, 阿里

您可以使用

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

下面的代码将打印
10
11
,这是
0XA
0XB

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

正如我所看到的,这里的主要问题是如何将表示十六进制数的2字符字符串转换为字节类型。Byte类有一个静态方法parseByte(strings,intradix),它可以使用所需的基数(在本例中为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;
}
publicstaticvoidmain(字符串[]args){
System.out.println(Arrays.toString(getBytes(“0001020F”));
}
公共静态字节[]getBytes(字符串str){
byte[]result=新字节[str.length()/2];//假设str的字符数为偶数。。。
for(int i=0;i
它会再次将我的字符串解码为字节吗?我的意思是这些字符串确实是我想要的。实际上,我的项目不需要再次将它们转换为字节就可以工作。我只是想在bytearray上插上那些线。就是这样。你的意思是你想再次将它从字节转换成十六进制?如果您想再次使用字符串,那么可以使用
Integer.toHexString()
基本上我的输出是,让我说11作为字符串。我想将其转换为整数0x11,以便能够将其放入字节[]。我的意思是int字符串SS=11;int hex1=0xSS;这是0x11。这是不可能的,您不能将字符串放入字节数组中。您只能将字节放在字节数组中,请考虑添加一些关于代码的详细解释(请参阅)。
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;
}