首页 > 解决方案 > 将二进制数据变量转换为字节列表

问题描述

我有从 file 读取的二进制数据变量set data [read $fp 5]。假设它是:0102030405以十六进制表示。

如何将其转换为这样的字节列表: {0x01 0x02 0x03 0x04 0x05}

我有一个需要二进制数据作为列表的函数。我想binary scan这是我需要的,但不知道如何使用它。

标签: tcl

解决方案


你是对的; binary scan是您需要的工具。你可能想要这样做:

binary scan $data "cu*" byteValues

这会在中生成byteValues无符号字节值列表。(b转换会产生位串,这不是您想要的。)例如:

% binary scan Abc "cu*" theValues
1
% puts $theValues
65 98 99

如果您正在处理旧版本的 Tcl,则需要c*代替,cu*然后每个字节的最高位是符号位。结果在技术上是正确的,但不是我发现的非常有用的东西。


推荐阅读