如何将tcl字符串视为十六进制数并将其转换为二进制?

如何将tcl字符串视为十六进制数并将其转换为二进制?,tcl,Tcl,我在变量中设置了一个tcl字符串。我想把它当作一个十六进制来转换成二进制。谁能帮我做到这一点 以下是我正在做的: $ /usr/bin/tclsh8.5 % set a a1a2a3a4a5a6 a1a2a3a4a5a6 % set b [ string range $a 0 3 ] a1a2 现在我希望变量“b”的a1a2值应被视为0xa1a2,以便将其转换为二进制。请帮我解决这个问题。如果您使用的是Tcl 8.6,那么二进制解码十六进制是最佳选择: binary decode hex $b

我在变量中设置了一个tcl字符串。我想把它当作一个十六进制来转换成二进制。谁能帮我做到这一点

以下是我正在做的:

$ /usr/bin/tclsh8.5
% set a a1a2a3a4a5a6
a1a2a3a4a5a6
% set b [ string range $a 0 3 ]
a1a2

现在我希望变量“b”的a1a2值应被视为0xa1a2,以便将其转换为二进制。请帮我解决这个问题。

如果您使用的是Tcl 8.6,那么
二进制解码十六进制
是最佳选择:

binary decode hex $b
如果您使用的是较旧版本的Tcl,则必须使用带有H格式说明符的
二进制格式

binary format H* $b
您可以将生成的字节数组写入文件或通过套接字等发送,但如果要将其显示为文本,建议先将其转换为字符串:

encoding convertfrom utf-8 [binary format H* $b]

你想从中得到什么?数字?一串字节?这些是不同的(约翰尼斯给出了“字节串”的完美答案)。