将十六进制代码字符串转换为十进制的int []

时间:2014-03-04 00:52:33

标签: java arrays string hex decimal

我正在开发一个应用程序,以int []的形式发送红外代码。我有一串十六进制代码:“0000 0048 0000 0018 00c1 00c00 0031 0090 0031 0090 0031 0030 0031 0090 0031 0090 0031 0090 0031 0090 0031 0090 0031 0030 0031 0030 0031 0030 0031 0030 0031 0030 0031 0090 0031 0030 0031 0030 0031 0030 0030 0031 0030 0031 0030 0031 0090 0031 0090 0031 0090 0031 073b“ 我需要将它转换为十进制格式的空格中的int []拆分。

String hexCode = "0000 0048 0000 0018 00c1 00c0 0031 0090 0031 0090 0031 0030 0031 0090 0031 0090 0031 0090 0031 0090 0031 0090 0031 0030 0031 0030 0031 0030 0031 0030 0031 0030 0031 0090 0031 0030 0031 0030 0031 0030 0031 0030 0031 0030 0031 0090 0031 0090 0031 0090 0031 073b"
String decimalCode = hex2dec(hexCode); //I don't know how to convert this and keep the spaces
String[] decArray = decimalCode.split(" ");
int[] final = decArray; //Not sure how to do this. Maybe a for loop?

我一直在这工作几个小时,我感到很沮丧。我无法成功地从十六进制转换为十进制字符串,然后我无法将其放入int []。

请帮忙!

1 个答案:

答案 0 :(得分:0)

我不确定你的目标是什么,但到目前为止你有正确的想法...... 但不是做一个hex2dec然后拆分你应该颠倒顺序,说:先拆分然后转换....

String hexCode = "0000 0048 0000 0018 00c1 00c0 0031 0090 0031 0090 0031 0030 0031 0090 0031 0090 0031 0090 0031 0090 0031 0090 0031 0030 0031 0030 0031 0030 0031 0030 0031 0030 0031 0090 0031 0030 0031 0030 0031 0030 0031 0030 0031 0030 0031 0090 0031 0090 0031 0090 0031 073b"

//splitting the hexcode into a string array
String[] splits =  decimalCode.split(" ");

//getting the length of the string aray, we need this to set
//the right size of the int[]
int amount = splits.length();

//values are the values wich you're interested in...
//we create the array with proper size(amount)
int[] values = new int[amount]

//now we iterate through the strong[] splits
for (int i = 0; i < amount; i ++){

    //we take a string vrom the array
    String str = splits[i];

    //the we parse the stringv into a int-value
    int parsedValue = Integer.parseInt(str, 16);

     //and fill up the value-array
    values[i] = parsedValue;
}
//when we're through with the iteration loop, we're done (so far)

如上所述,我不太确定你的目标是什么......这可能导致错误的解析方法......