Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将字符串转换为十六进制字节_Java_Android_String_Hex - Fatal编程技术网

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

如何在Java中将字符串转换为十六进制字节,java,android,string,hex,Java,Android,String,Hex,我想将字符串中的两个字符分开,并将其转换为十六进制字节数组表示形式, 我只是不知道该怎么做 字符串a=十六进制a,十进制为10 字符串b=十六进制b,十进制为11 String toConvert = "abbbbbbbbbbbbbbbbbbbbbbc"; byte[] output = new byte[12]; Input ab bb bb bb bb bb bb bb bb bb bb

我想将字符串中的两个字符分开,并将其转换为十六进制字节数组表示形式, 我只是不知道该怎么做

字符串a=十六进制a,十进制为10 字符串b=十六进制b,十进制为11

String toConvert = "abbbbbbbbbbbbbbbbbbbbbbc";
byte[] output = new byte[12];





                          Input
 ab    bb   bb    bb  bb   bb   bb   bb   bb   bb   bb   bc
                          output
[-85, -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, -68]
Apache Common Codec的类正好满足您的需要:

byte[] bytes = Hex.decodeHex("abbbbbbbbbbbbbbbbbbbbbbc".toCharArray());
如果您不能/不会使用第三方,您可以随时“借用”它们的实现(稍微简化-为了简单起见,我省略了正确性检查):

公共静态字节[]解码十六进制(最终字符[]数据){
最终整数长度=data.length;
//句柄空字符串-为清晰起见省略
最终字节[]输出=新字节[len>>1];
//两个字符构成十六进制值。
对于(int i=0,j=0;jint f=字符。数字(数据[j],16)取两个字符组中的第一个字符,将其十六进制值乘以
16
(位于
161
位置)。该结果将添加到第二个字符的十六进制值

String toConvert = "abbbbbbbbbbbbbbbbbbbbbbc";
byte[] output = new byte[toConvert.length() / 2];

for (int i = 0; i < output.length; i++) {
    output[i] |= Character.digit(toConvert.charAt(i * 2), 16) * 16;
    output[i] |= Character.digit(toConvert.charAt(i * 2 + 1), 16);
}
String toConvert=“abbbbbbbbbbbbbbbbbbbbbbbbb”;
字节[]输出=新字节[toConvert.length()/2];
for(int i=0;i
用于(int i=0;i<12;i++){
输出[i]=(字节)整数.parseInt(toConvert.substring(i*2,i*2+2),16);
}

否我想要一个字节数组ass输出非字符串,其字符串为十六进制而非十六进制到字符串。您为一个24字符的字符串保留了12个字节?示例(ab)a是msb,b是lsb,我想把它们组合起来,在字符串a=hex a中转换成十六进制,在字符串b=hex b中转换成十进制的十进制,在字符串b=hex b中转换成十进制的十一进制,你是说在
string toConvert
中?这是一个多么糟糕的例子!更好的
string toConvert=“0344A7DF”;
。您将不会转换为十六进制,而是从十六进制表示进行解码。基本体没有方法。可能您指的是
整数。valueOf
?不,我指的是我写的:)整数不是基本体。只要试着运行它,您就会看到。谢谢,这也是非常有用的helpful@Dima如果可以,我会运行它(不编译,因为上面已经说过了)。不鼓励只使用代码的答案。最好解释什么、为什么和如何。
String toConvert = "abbbbbbbbbbbbbbbbbbbbbbc";
byte[] output = new byte[toConvert.length() / 2];

for (int i = 0; i < output.length; i++) {
    output[i] |= Character.digit(toConvert.charAt(i * 2), 16) * 16;
    output[i] |= Character.digit(toConvert.charAt(i * 2 + 1), 16);
}
for(int i = 0; i < 12; i++) {
    output[i] = (byte) Integer.parseInt(toConvert.substring(i*2, i*2+2), 16);
}