问:在Java中将int转换为char时,默认结果似乎是与该int值对应的ASCII字符。我的问题是,有什么方法可以指定在转换时使用的不同字符集吗?
(背景信息:我正在研究一个项目,我在其中读取一串二进制字符,将其转换为块,然后将块转换为十进制的值,整数,然后将其转换为字符。我然后需要能够通过反转过程将生成的压缩字符“扩展”回二进制。 我已经能够做到这一点,但是目前我只能将6位“压缩”成一个字符,因为当我允许更大的数量时,范围内的某些值似乎无法处理以及ASCII;它们变成了盒子或问号,当它们被重新转换为int时,它们的原始值并未被保留。如果我可以使用另一个字符集,我想我可以避免这个问题并一次压缩二进制8位,这是我的目标。)
我希望这很清楚,并提前感谢!
答案 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的完成。但听起来你可能会追求其他东西吗?