我正在尝试使用 tcl 将一些字符转换为十六进制。
我通常会做这样的事情:
[binary format a* 'o']
返回111,这是'o'的int表示,然后可以转换。
但是,我检索字符的方式,
[value string_split]
返回“o”而不是“o”,导致函数抛出错误,本质上就像这样做:[binary format a* "o"]
返回“错误:没有任何东西被命名为“o””
那么,tcl 上下文中的“o”和“o”之间有什么区别,以及如何让我的
[binary format a* [value string_split]]
调用像 [binary format a* 'o']
那样返回 111。
需要注意的是,我正在使用 TheFoundry 的 Nuke 来执行此操作,我不知道他们到底使用的是哪个版本的 TCL,但它是一个相当旧的版本。
对于字符串的一般情况,包括长度为1的字符串,从Tcl 8.6开始也可以这样做:
binary encode hex $input_string
binary decode hex $hex_string
这假设
$input_string
已经是“二进制”,因此对于文本来说,明智的做法是首先:
set input_string [encoding convertto utf-8 $input_string]