首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一个小的十六进制字符串转换为整数

将一个小的十六进制字符串转换为整数
EN

Stack Overflow用户
提问于 2013-11-12 20:56:07
回答 3查看 160关注 0票数 0

我正在尝试将一个小的十六进制数字字符串转换成一个整数数组,直到现在还没有成功。我试着在多个网站上找到这样的问题,但大多数人想出的十六进制数都太大了,这里不是这样的。当前代码:

代码语言:javascript
运行
复制
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的结果,但它打印了与我开始使用的相同的(十六进制)号(在本例中为44 74 71 20),而不是我所期望的4个数字。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-12 21:30:31

您需要为转换方法Integer.parseInt(String s, int radix)提供一个基(对于十六进制是16 ),所以您需要更改这一行

代码语言:javascript
运行
复制
asciiCode = Integer.parseInt(codeArray[indexC]);

代码语言:javascript
运行
复制
asciiCode = Integer.parseInt(codeArray[indexC], 16);

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

票数 0
EN

Stack Overflow用户

发布于 2013-11-12 20:57:24

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

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

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

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

代码语言:javascript
运行
复制
for(int i = 0; i < asciiArray.length; i++)
    System.out.print(asciiArry[i]);
票数 1
EN

Stack Overflow用户

发布于 2013-11-12 20:58:48

你在打印数组的地址,这是一个常见的错误。使用System.out.println(Arrays.toString(asciiArray))代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19939704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档