gpt4 book ai didi

java - 将 unicode "\u0063"字符串转换为 "c"

转载 作者:行者123 更新时间:2023-12-01 12:25:10 27 4
gpt4 key购买 nike

我正在做一些密码分析作业,并试图编写执行 a + b = c 的代码。我的想法是使用 unicode。 b + (b-a) = c。问题是我的代码返回 c 的 unicode 值而不是字符串“c”,并且我无法转换它。

请有人解释一下下面称为 unicode 的字符串与称为 test 和 test2 的字符串之间的区别吗?还有什么方法可以让字符串 unicodeOfC 打印“c”?

//this calculates the unicode value for c
String unicodeOfC = ("\\u" + Integer.toHexString('b'+('b'-'a') | 0x10000).substring(1));

//this prints \u0063
System.out.println(unicodeOfC);

String test = "\u0063";

//this prints c
System.out.println(test);

//this is false
System.out.println(test.equals(unicodeOfC));

String test2 = "\u0063";
//this is true
System.out.println(test.equals(test2));

最佳答案

testtest2 之间没有区别。它们都是String literals引用相同的String。这个String文字由 unicode escape 组成。 。

A compiler for the Java programming language ("Java compiler") first recognizes Unicode escapes in its input, translating the ASCII characters \u followed by four hexadecimal digits to the UTF-16 code unit (§3.1) for the indicated hexadecimal value, and passing all other characters unchanged.

所以编译器会翻译这个unicode转义并将其转换为相应的UTF-16代码单元。也就是说,unicode 转义 \u0063 转换为字符 c

在此

String unicodeOfC = ("\\u" + Integer.toHexString('b'+('b'-'a') | 0x10000).substring(1));

String 文字 "\\u" (使用 \ 字符转义 \ 字符) 的运行时值为 \u,即。两个字符 \u。该String 与调用toHexString(..) 的结果连接起来。然后,您对生成的 String 调用 substring 并将其结果分配给 unicodeOfC。所以 String 值为 \u0063,即。 6 个字符 \u0063

Also is there any way I could get the string unicodeOfC to print "c"?

与创建它的方式类似,您需要获取 unicode 转义的数字部分,

String numerical = unicodeOfC.replace("\\u", "");
int val = Integer.parseInt(numerical, 16);
System.out.println((char) val);

然后您可以将其打印出来。

关于java - 将 unicode "\u0063"字符串转换为 "c",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416455/

27 4 0