在java中将int转换为char-我必须使用ASCII吗?

时间:2010-11-21 20:29:53

标签: java char casting character

问:在Java中将int转换为char时,默认结果似乎是与该int值对应的ASCII字符。我的问题是,有什么方法可以指定在转换时使用的不同字符集吗?

(背景信息:我正在研究一个项目,我在其中读取一串二进制字符,将其转换为块,然后将块转换为十进制的值,整数,然后将其转换为字符。我然后需要能够通过反转过程将生成的压缩字符“扩展”回二进制。 我已经能够做到这一点,但是目前我只能将6位“压缩”成一个字符,因为当我允许更大的数量时,范围内的某些值似乎无法处理以及ASCII;它们变成了盒子或问号,当它们被重新转换为int时,它们的原始值并未被保留。如果我可以使用另一个字符集,我想我可以避免这个问题并一次压缩二进制8位,这是我的目标。)

我希望这很清楚,并提前感谢!

4 个答案:

答案 0 :(得分:3)

您的问题与ASCII或字符集无关。

在Java中,char只是一个16位整数。将字符(32位整数)转换为字符时,您唯一要做的就是保留int的16个最低有效位,并丢弃高16位。这称为缩小转换

参考文献:

答案 1 :(得分:1)

字符和整数之间的转换使用Unicode值,其中ASCII是子集。如果要处理二进制数据,则应避免使用字符和字符串,而应使用整数数组 - 请注意,Java没有无符号的8位整数。

答案 2 :(得分:0)

你在非演员阵容中搜索的内容,这是转换。

有一个String构造函数,它接受一个byte和charset编码数组。这应该对你有帮助。

答案 3 :(得分:0)

  

我正在开展一个项目   读入一串二进制字符,   将其转换为块,并转换   大块的价值观   十进制,整数,然后我作为   字符。然后我需要能够   “扩展”产生的压缩   字符通过反转返回二进制   这个过程。

你没有提到为什么你这样做,而且(说实话)你有点难以理解你想要描述的东西(有一件事,我看不到为什么生成的字符会以任何方式被“压缩”。

如果您只想将二进制数据表示为文本,那么有很多standard ways的完成。但听起来你可能会追求其他东西吗?