我正在尝试为一种非常简单的加密类型编写解码器。 0-255 之间的数字通过 Scanner 输入,位被反转,然后转换为字符并打印。
例如,数字 178 应转换为字母“M”。
178 是 10110010。
反转所有位应得到 01001101,即 77 或“M”作为字符。
我遇到的主要问题是,据我所知,Java 不支持无符号字节。我可以将值读取为 int 或 short,但由于额外的位,这些值将在转换过程中关闭。理想情况下,我可以只使用按位补码运算符,但我认为如果我用带符号的数字这样做,我最终会得到负值。关于我应该如何处理这个问题有什么想法吗?
最佳答案
我会简单地使用 ones 的补码并通过使用二进制 and 去除其他位。
public class Conv {
public static void main(String[] args) {
int val = 178;
val = ~val & 0xff;
System.out.println((char) val);
}
}
关于java - 如何在 Java 中反转无符号字节的位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324707/