将小十六进制字符串转换为整数

时间:2013-11-12 20:56:08

标签: java integer hex converter decoding

我正在尝试将一小串十六进制数转换为整数数组,直到现在还不是很成功。我试图在多个网站上找到这样的问题,但大多数人想出的十六进制数字只是大到了,这不是这里的情况。目前的代码:

static String decode(String message) {
        int indexC = 0;
        int asciiCode = 0;
        String [] codeArray = message.split(" ");
        int [] asciiArray = new int[4];

        while (indexC < codeArray.length){
            asciiCode = Integer.parseInt(codeArray[indexC]);
            asciiArray[indexC] = asciiCode;
        }
            for (int i = 0; i < asciiArray.length; i++){
        System.out.println(asciiArray[i]);  
            }
    }

我确实得到了system.out.println的结果,但不是我期望的4个数字,它打印的是我开头的相同(十六进制)数字(在这种情况下:44 74 71 20)

我不允许包含额外的库或包,我只能使用自己创建的代码和类。我的代码的要点是获取小数值。 println只是检查我得到了什么(但如果有人知道如何正确打印该行,请回复;))。

(更多背景信息:我正在为文本构建一个简单的加密器,我现在正在使用解码器,我需要连接到十六进制数字的ascii值)

3 个答案:

答案 0 :(得分:1)

[I@221a5d08是数组对象本身的字符串表示形式,而不是数组的内容。

如果要打印其内容,请使用Arrays.toString(int [] a)

System.out.println(Arrays.toString(asciiArray));

如果您不允许使用此方法,则可以实现一个简单的for循环:

for(int i = 0; i < asciiArray.length; i++)
    System.out.print(asciiArry[i]);

答案 1 :(得分:0)

您正在打印阵列的地址,这是一个常见的错误。请改用System.out.println(Arrays.toString(asciiArray))

答案 2 :(得分:0)

您需要为转换方法Integer.parseInt(String s, int radix)提供基数(对于十六进制为16),因此您需要更改此行

asciiCode = Integer.parseInt(codeArray[indexC]);

asciiCode = Integer.parseInt(codeArray[indexC], 16);

你得到相同数字的原因是因为如果你不提供基数,那么默认为10。