在 Asymptote 中,如何将十六进制代码转换为其对应的 ascii 字符?

在 Asymptote 中,如何将十六进制代码转换为其对应的 ascii 字符?

在 中Asymptote,我想将十六进制代码转换为包含相应 ascii 字符的字符串。例如,给定“4E”,我想要一个返回“N”的代码。

有一个内置函数int hex(string s)可以将十六进制转换为十进制,因此将 int 转换为 ascii 字符的函数也可以解决我的问题。

有一个内置函数int ascii(string s)可以执行我所寻找的相反操作。因此ascii("N")将返回一个值为 78 的整数(相当于十六进制代码“4E”)。

最后,我知道可以使用单引号直接将十六进制代码转换为字符,如下所示string str = '\x4E';。这对我没有帮助,因为我已经在字符串变量中定义了字符串“4E”。

以下是上面讨论的命令及其相关的输出。 我想要一个以字符串hexCode作为输入并以字符串“N”作为输出的函数。

string hexCode = "4E";
write('\x4E');           // -----> N
write(hex(hexCode));     // -----> 78
write(ascii("N"));       // -----> 78
write('\x' + hexCode);   // -----> \x4E
write("\x4E");           // -----> \x4E

答案1

您可以使用 C 风格的格式字符串:

string hexCode = "4E";
write('\x4E');                    // -----> N
write(hex(hexCode));              // -----> 78
write(ascii("N"));                // -----> 78
write('\x' + hexCode);            // -----> \x4E
write("\x4E");                    // -----> \x4E
write(format("%c",hex(hexCode))); // -----> N

例如https://en.cppreference.com/w/c/io/fprintf对于转换代码的列表,%c表示 int 到字符。

相关内容