java - 如何在 Java 中反转无符号字节的位?

标签 java byte unsigned bit complement

我正在尝试为一种非常简单的加密类型编写解码器。 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/

相关文章:

java - 为什么ExecutorService接口(interface)没有实现AutoCloseable?

php - 使用 bin2hex(random_bytes($str)) 在密码学上是安全的吗?

delphi - WideChar 转换为字节?

ruby - 负 FixNum 的无符号等价物

Java 无符号 - 删除符号位

java - 带有 Hadoop 2.x 的 PigUnit

java - 如何在 Eclipse 中使用 pom.xml/Maven 初始化本地thoughtsite(App Engine示例)项目?

java - 如何使用 Tesseract 从 Tika OCR 中提取值

c - 在一个字节中,如何将高 4 位与其低 4 位交换

c# - 将 16 位无符号整数状态字转换为位数组