我需要将字节转换为十六进制字符串,并尝试如下: String.format("%02x", -1);
注意,这里的-1是二进制补码整数
但是我得到的返回是“ffffffff”而不是预期的“ff”?
最佳答案
因为ff
不是-1
。它是 255。在格式中指定 02
可能会用前导零填充一个短数字,使其达到 2 位数字,但它不会以某种方式截断数字这会给出错误的值。
如果你想获取一个数字的一字节值,可以使用&0xff
将其截取为一字节。
int n = -1;
String.format("%02x", n&0xff);
关于java - 为什么 String.format ("%02x ", -1) 返回 ffffffff 而不是 ff?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198806/