如何将整数转换为Java中的字节?

Lan*_*opp 19 java int byte casting

我知道Java不允许无符号类型,所以我想知道它如何将整数转换为一个字节.假设我有一个值为255的整数a,我将整数转换为一个字节.值是否以字节11111111表示?换句话说,值是否更多地被视为带符号的8位整数,还是直接复制整数的最后8位?

Mic*_*ers 24

这称为缩小基元转换.根据规格:

将有符号整数缩小到整数类型T只会丢弃除n个最低位之外的所有位,其中n是用于表示类型T的位数.除了可能丢失有关数值大小的信息之外,这可能导致结果值的符号与输入值的符号不同.

所以这是你列出的第二个选项(直接复制最后8位).

我不确定你的问题是否知道如何表示有符号的整数值,所以为了安全起见我会指出在二进制补码系统中字节值1111 1111等于-1 (Java使用).


Pau*_*aul 7

int i = 255;

byte b = (byte)i;
Run Code Online (Sandbox Code Playgroud)

因此,be 的十六进制值为 0xFF,但十进制值为 -1。

int i = 0xff00;

byte b = (byte)i;
Run Code Online (Sandbox Code Playgroud)

b 现在的值为 0x00。这表明java获取了整数的最后一个字节。IE。最后 8 位,但这是有符号的。