将十六进制字符串转换为字节数组

问题描述 投票:0回答:1

我编写了一个程序,将十六进制字符串转换为字节数组。 “ 2e65” = [2,14,6,5],但我想知道是否还有另一种方法来使用较少的代码行或不使用ASCII表值。

import java.util.Arrays;

公共类stringToData {

public static byte[] stringToData( String dataString) {

    byte [] hexStringToByteArr = new byte[dataString.length()];

    for ( int i = 0; i < dataString.length(); i++) {

        char c = dataString.charAt(i);

        if ( c == 48 ) { hexStringToByteArr[i] = 0;}
        if ( c == 49 ) { hexStringToByteArr[i] = 1;}
        if ( c == 50 ) { hexStringToByteArr[i] = 2;}
        if ( c == 51 ) { hexStringToByteArr[i] = 3;}
        if ( c == 52 ) { hexStringToByteArr[i] = 4;}
        if ( c == 53 ) { hexStringToByteArr[i] = 5;}
        if ( c == 54 ) { hexStringToByteArr[i] = 6;}
        if ( c == 55 ) { hexStringToByteArr[i] = 7;}
        if ( c == 56 ) { hexStringToByteArr[i] = 8;}
        if ( c == 57 ) { hexStringToByteArr[i] = 9;}
        if ( c == 97 ) { hexStringToByteArr[i] = 10;}
        if ( c == 98 ) { hexStringToByteArr[i] = 11;}
        if ( c == 99 ) { hexStringToByteArr[i] = 12;}
        if ( c == 100 ) {hexStringToByteArr[i] = 13;}
        if ( c == 101 ) {hexStringToByteArr[i] = 14;}
        if ( c == 102 ) {hexStringToByteArr[i] = 15;}
    }
    return hexStringToByteArr;
}

public static void main(String [] args){

    String pracString = "2e65";

    System.out.println(Arrays.toString(stringToData(pracString)));
}

}

java arrays string hex
1个回答
0
投票

要将十六进制字符串转换为字节数组,您首先需要获取给定字符串的长度,并在创建新的字节数组时将其包括在内。

string str = "Sample string";
byte[] val = new byte[str.length() / 2];

现在,进行一个for循环,直到字节数组的长度。

for (int i = 0; i < val.length; i++) {
   int index = i * 2;
   int j = Integer.parseInt(str.substring(index, index + 2), 16);
   val[i] = (byte) j;
}
© www.soinside.com 2019 - 2024. All rights reserved.