Java中与C#的.ToString("X4")相当的方法是什么?

4
在将字符串转换为Unicode时,我正在寻找Java中等同于C#.ToString(“X4”)的真实等价物。 Java代码:
char[] stringChars = "Notices".ToCharArray();
List<string> ucs2code = new List<string>();
foreach (char chr in stringChars)
{
    string chrCode = ((int)chr).ToString("X4");
    ucs2code.Add(chrCode);
}
string charCode = string.Join("", ucs2code);

这给了我一个结果004E006F00740069006300650073,正是我所需要的。

我尝试过的Java代码:

char[] stringChars = "Notices".toCharArray();
String charCode = "";
for (char chr : stringChars) {
    String chrCode = Integer.toHexString((int)chr);
    charCode += chrCode;
}

这给了我4e6f7469636573。 看起来是正确的,但不完全是我需要的。

我是否漏掉了什么?一些建议会很有帮助。


1
这不就是将每个 chrCode 填充为 00 并转换为大写的问题吗? - thumbmunkeys
@thumbmunkeys:谢谢,是的,正确。虽然这样可以解决问题,但被称为变通方法而不是真正的等价物。 :-) - Indigo
我会称它为一个解决方案 :) - thumbmunkeys
确实,它解决了问题,为什么不呢。 - Indigo
1个回答

4

我认为没有真正的等效物。如果您想看一下,Java有一个Format类,可以使用。

function:Integer.toHexString((int)chr)

这是正确的方法,应该就是这样做。

解决方案:格式化字符串或者只是将 "00" 和 String.toUpperCase() 连接起来都可以达到同样的效果。 - Indigo
好的,我不是很擅长Java,但很高兴看到问题已经解决了。 :) - Dominic B.
我也是,我一直在将之前用C#.Net写的工具重构成Java,遇到了很多类似这样的问题。虽然很明显 :-) - Indigo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接