gpt4 book ai didi

java - 通过删除 Java 中的前导零来缩短十六进制数

转载 作者:行者123 更新时间:2023-12-02 16:16:50 25 4
gpt4 key购买 nike

我在字符串中有可用的十六进制数字,我想通过删除前导零来缩短它。我需要用 Java 来做

例如:

0000000000000000000000000A000000   -> 0x0A000000
0x0000000000000000000000000A000000 -> 0x0A000000

000000000000000000000000C0A80000 -> 0xC0A80000
0x000000000000000000000000C0A80000 -> 0xC0A80000

当前下面的代码抛出 NumberFormatException 异常

System.out.println(Long.toHexString(Long.parseLong("0x0000000000000000000000000A000000")));

最佳答案

正如其他人提到的,十六进制字符串不以 0x 开头,这只是 hexadecimal literals 的前缀。 .

实现您想要的目标的一种可能性如下:

void foo(String myString) {
/*
Here we're making myString upper case and checking if it begins w/ 0x.
If the string starts with 0X, that'll be replaced with an empty string.
*/
if ((myString = myString.ToUpperCase()).startsWith("0X")) {
myString = myString.replace("0X", "");
}

String parsedHex = Long.toHexString(Long.parseLong(myString, 16 /* This is the radix (base) of the number. In this case we want hex (16) */));
System.out.println(String.format("0x%s%s", parsedHex.length() % 2 == 0 ? "" : "0" /* If it's an odd number, add a leading zero. */, parsedHex));

}

关于java - 通过删除 Java 中的前导零来缩短十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56478066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com