我需要像这样转换十进制值
int dec = 129;
成一个字节值,如
byte frame2 = (byte) 129;
但正如您可能已经猜到的那样,它会转换为一个意想不到的值。我希望字节值实际上是 129 而不是 -127(frame2 的值)。
你怎么能在Java中实现它?我也将不胜感激。
谢谢
我需要像这样转换十进制值
int dec = 129;
成一个字节值,如
byte frame2 = (byte) 129;
但正如您可能已经猜到的那样,它会转换为一个意想不到的值。我希望字节值实际上是 129 而不是 -127(frame2 的值)。
你怎么能在Java中实现它?我也将不胜感激。
谢谢
你不能也很可能不需要。根据定义,一个字节是 -128 到 127。但是,如果需要编码,您可以在一个字节中存储任何 256 个不同的值。
byte b = (byte) 129;
int i = b & 0xff; // == 129
或者
byte b = (byte) (129 + Byte.MIN_VALUE);
int i = b - Byte.MIN_VALUE; // also 129.
我需要像这样转换十进制值
停在那儿。没有“十进制值”这样的东西。有一些值,它们以 2s 补码形式保存,并且有十进制表示。
int dec = 129;
这将存储为 129(10) 或 81(16)。
成一个字节值,如
byte frame2 = (byte) 129;
其结果将是-127,
因为字节是用 Java 签名的,并且您的值设置了符号位。
如果您想像使用它一样使用该值129
,请使用(frame2 & 0xff).
但是很可能您根本不需要这样做。
您的问题实际上是关于 Java 中字节的符号扩展:它根本与小数无关。