在 中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 到字符。