1 回答
TA贡献1851条经验 获得超3个赞
显然,您正在接收一个String
,将其char
s 转换为它们的 Unicode 代码值,并形成一个String
包含这些代码值的十六进制表示形式的 a 。你要解决的问题是用字符向左填充结果,'0'
使总长度不小于八。实际上,示例代码中与问题本身直接相关的唯一部分是
int addhex = 0;
和
System.out.println("\ nkey in Hex:" + addhex + builder.toString());
. 其他一切都只是设置。
然而,应该清楚的是,这种特定的尝试是行不通的,因为除了所有其他考虑之外,您需要一些东西来适应数字字符串的未填充长度。该计算完全不依赖于数字字符串的长度。
由于您已经在 a 中累积了数字字符串,因此在读出结果之前对其StringBuilder
应用所需的更改似乎是明智的。有几种方法可以解决这个问题,但一个非常简单的方法是一次只将一个归零,直到达到所需的长度:insert()
while (builder.length() < 8) { builder.insert(0, '0'); // Inserts char '0' at position 0}
但是,我确实怀疑您可能错误地解释了问题。执行您所要求的操作所获得的结果是模棱两可的:在大多数需要此类填充的情况下,有多个输入字符串可以产生相同的输出。因此,我倾向于猜测,真正想要的是逐字符填充与每个输入字符对应的数字,这样输入“12”就会产生结果“00310032”。这是因为 Javachar
值是 16 位宽,并且它会产生可靠可逆的转换。如果那是您真正想要的,那么您应该能够采用我提出的方法来实现它(尽管在那种情况下有更简单的方法)。
如果使用代码
Long.toHexString(blabla);是不是把“0x00”的值改成“\0030”,这样0的输出就是30
以十六进制表示的字符“0”的 Unicode 代码值为 30。您的转换方法将为输入字符串生成该值"0"
。您的方法对其输入中的字符“\”没有任何特殊意义。
添加回答
举报