将字符串转换为扩展ASCII十进制

时间:2015-08-20 20:39:47

标签: java string character-encoding decimal ascii

使用我的程序,用户可以在JTextfield中键入文本。文本将保存在一个字符串中(在“strLine1”下面的代码中),并应转换为十进制数字。

因此我使用了getBytes。

bytearray1 = strLine1.getBytes();

这是我的输出代码:

for (int i=0; i<bytearray1.length; i++) {
                    builder1.append(bytearray1[i]);
                    if(i != bytearray1.length) 
                        builder1.append("• ");
}

这很有效,但当我输入一些像“ß”或“ö”这样的特殊字符时,我会输出“-33”或“-10”等输出。我读了很多但没有取得成功。

“ß”的结果必须是225和“ö”148,如下页所示: http://www.theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png

字符在那里列为“扩展ASCII”。

我也尝试了几个字符集,但没有得到正确的结果。

请帮忙。感谢。

3 个答案:

答案 0 :(得分:1)

使用toCharArray()代替getBytes()

我将继续学习为什么由你来解决。

答案 1 :(得分:1)

所以我找到了一个适合我的解决方案:

我将其更改为getBytes以下内容:

try {                                                   
                bytearray1 = strLine1.getBytes("CP858");
    }           catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
}

我在这里使用正确的代码页(858)。

这是我的输出:

for (int i=0; i<bytearray1.length; i++) {               
                    builder1.append((int)bytearray1[i] &0xff);      
                    if(i != bytearray1.length) 
                        builder1.append("• ");
                }
            }

所以&#34;&amp; 0xff&#34;将其从签名转换为无签名。

答案 2 :(得分:0)

好吧,字节不能保存比127更高的数字。没有提到。所以我改成了:

chararray1 = strLine1.toCharArray();

和我的Stringbuilder输出到:

builder1.append((int)chararray1[i]); 

但是“ß”是223而不是225.其他字符也是错误的。