在 Java 中将字节转换为无符号字节

要了解如何在 Java 中将字节转换为无符号字节的概念,你需要熟悉一些低级计算机概念。你需要了解所有关于转换、位、字节、字和诸如此类的信息。让我们深入了解一下。

在 Java 中将字节转换为无符号字节

一个字节有 8 位,计算有符号字节和无符号字节范围的公式如下。

Signed Number
min = -1 * 2^(N - 1) = -1 * 2^(7) = -128
max = 2^(N - 1)- 1 = 27 - 1 = 127
Unsigned Number
min = 0
max = 2^(N) - 1 = 2^(8) - 1 = 255
//N is the number of bits

有符号数范围较小的原因是保留了一位用于展示有符号符号;这就是范围从 -128 到 127 的原因。Java 中没有无符号字节涉及无符号数。那么,我们如何用 Java 制作它们呢?

你可以通过将它们转换为新整数 (int) 并使用 0xff 屏蔽(按位与)该整数来生成无符号字节。这样,你将获得最后 8 位,从而防止符号扩展。正如我们所知,0xFF = 1111 1111 在对原始字节进行按位与运算后,将得到一个无符号字节。

如果你还记得,当涉及到有符号位时,所有左边的位都是 1。按位与运算会将它们变为 0,这就是我们对无符号数的表示。看看下面的代码。

import javax.swing.GroupLayout.Alignment;
//library to perform this task
public class Main
{
    public static void main(String[] args)
    {
        byte byteData = -3;       //-3 SIGNED  253 UNSIGNED Byte
        int Data =byteData & 0xff;
        System.out.println(Data);
    }
}

输出:

253

这是一个非常简单的过程,但它的概念有点复杂。了解更多关于 Java 中无符号字节的信息这里。