Java 正确地将十进制值转换为字节值
我需要像这样转换十进制值Java 正确地将十进制值转换为字节值,java,Java,我需要像这样转换十进制值 int dec = 129; byte frame2 = (byte) 129; 转换为一个字节值,如 int dec = 129; byte frame2 = (byte) 129; 但正如您可能已经猜到的,它会转换为一个意外的值。我希望字节值是129,而不是-127(frame2的值) 如何用Java实现它?我也希望你能解释一下 谢谢你不能,而且很可能你不需要。一个字节的定义是-128到127。但是,如果需要编码,可以在一个字节中存储任意256个不同的值 b
int dec = 129;
byte frame2 = (byte) 129;
转换为一个字节值,如
int dec = 129;
byte frame2 = (byte) 129;
但正如您可能已经猜到的,它会转换为一个意外的值。我希望字节值是129,而不是-127(frame2的值)
如何用Java实现它?我也希望你能解释一下
谢谢你不能,而且很可能你不需要。一个字节的定义是-128到127。但是,如果需要编码,可以在一个字节中存储任意256个不同的值
byte b = (byte) 129;
int i = b & 0xff; // == 129
或
你不能,而且很可能你不需要。一个字节的定义是-128到127。但是,如果需要编码,可以在一个字节中存储任意256个不同的值
byte b = (byte) 129;
int i = b & 0xff; // == 129
或
我需要像这样转换十进制值
int dec = 129;
byte frame2 = (byte) 129;
停在那里。没有所谓的“十进制值”。有些值保存在2s补码中,有些是十进制表示
将存储为129(10)或81(16)
转换为一个字节值,如
int dec = 129;
byte frame2 = (byte) 129;
结果将是-127,
,因为字节是用Java签名的,您的值设置了符号位
如果要将该值当作129
使用,请使用(frame2&0xff)。
但很可能根本不需要这样做
您的问题实际上是关于Java中字节的符号扩展:它与小数无关
我需要像这样转换十进制值
int dec = 129;
byte frame2 = (byte) 129;
停在那里。没有所谓的“十进制值”。有些值保存在2s补码中,有些是十进制表示
将存储为129(10)或81(16)
转换为一个字节值,如
int dec = 129;
byte frame2 = (byte) 129;
结果将是-127,
,因为字节是用Java签名的,您的值设置了符号位
如果要将该值当作129
使用,请使用(frame2&0xff)。
但很可能根本不需要这样做
您的问题实际上是关于Java中字节的符号扩展:它与小数无关。不要使用byte:@DekDekku这会慢得多,但它有什么帮助?你能证明你的意思吗?我只是说不要用字节。“也不是字节,这在利害关系上是完全相同的东西。@DekDekku根据OP的问题,如果他需要存储0到255之间的值,字节可能非常适合。“他只是需要在知情的情况下使用它。”DekDekku我以为你是在建议使用Byte。现在还不清楚你的建议是什么。不要使用byte:@DekDekku,这样会慢很多,但它会有什么帮助?你能证明你的意思吗?我只是说不要用字节。“也不是字节,这在利害关系上是完全相同的东西。@DekDekku根据OP的问题,如果他需要存储0到255之间的值,字节可能非常适合。“他只是需要在知情的情况下使用它。”DekDekku我以为你是在建议使用Byte。不清楚你建议的替代方案是什么。+1我想说字节是正确的,它都是-127或129,这更像是字节的表示/使用问题。+1我想说字节是正确的,它都是-127或129,这更像是字节的表示/使用问题。