为什么String.format(“%02x”,-1)返回ffffffff而不是ff?

问题描述 投票:0回答:3

我需要将字节转换为十六进制字符串,并在下面尝试过:String.format(“%02x”,-1);

注意,-1为二进制补码

但是我得到的回报是“ ffffffff”而不是预期的“ ff”?

java hex string.format
3个回答
0
投票

因为ff不是-1。它是255。在您的格式中指定02可能会pad一个带前导零的短数字,以使其最多为2位数字,但不会以错误的值截断数字。] >

如果要为数字获取一个字节的值,则可以使用&0xff将其剪切为一个字节。

int n = -1;
String.format("%02x", n&0xff);

0
投票

因为%02表示结果的最小


0
投票

格式化不截断

© www.soinside.com 2019 - 2024. All rights reserved.