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

Haider Ali 2023年10月12日
在 Java 中将字节转换为无符号字节

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

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

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

Signed Number min = -1 * 2 ^ (N - 1) = -1 * 2 ^ (7) = -128 max = 2 ^ (N - 1) - 1 = 2 ^ 7 - 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 中无符号字节的信息这里

作者: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn