正确地将十进制值转换为字节值

Jas*_*son 1 java

我需要转换十进制值

int dec = 129;
Run Code Online (Sandbox Code Playgroud)

变成像字节值一样

byte frame2 = (byte) 129;
Run Code Online (Sandbox Code Playgroud)

但正如您可能已经猜到的那样,它会转换为意外值.我希望字节值字面上是129而不是-127(frame2的值).

你怎么能用Java实现它?我也很感激解释.

谢谢

Pet*_*rey 7

你不能,也很可能你不需要.根据定义,一个字节是-128到127.但是,如果需要编码,则可以在一个字节中存储任何256个不同的值.

byte b = (byte) 129;
int i = b & 0xff; // == 129
Run Code Online (Sandbox Code Playgroud)

要么

byte b = (byte) (129 + Byte.MIN_VALUE);
int i = b - Byte.MIN_VALUE; // also 129.
Run Code Online (Sandbox Code Playgroud)