tcl - 将二进制数据变量转换为字节列表
问题描述
我有从 file 读取的二进制数据变量set data [read $fp 5]
。假设它是:0102030405
以十六进制表示。
如何将其转换为这样的字节列表:
{0x01 0x02 0x03 0x04 0x05}
?
我有一个需要二进制数据作为列表的函数。我想binary scan
这是我需要的,但不知道如何使用它。
解决方案
你是对的; binary scan
是您需要的工具。你可能想要这样做:
binary scan $data "cu*" byteValues
这会在中生成byteValues
无符号字节值列表。(b
转换会产生位串,这不是您想要的。)例如:
% binary scan Abc "cu*" theValues
1
% puts $theValues
65 98 99
如果您正在处理旧版本的 Tcl,则需要c*
代替,cu*
然后每个字节的最高位是符号位。结果在技术上是正确的,但不是我发现的非常有用的东西。
推荐阅读
- javascript - 嵌入消息中的图像
- firebase - 图像资源服务捕获的异常无效的参数:URI 文件中未指定主机:///
- swift - SwiftUI,从 URLSession 发布获取结果并存储到变量中
- regex - 使用正则表达式切换多语言子字符串位置
- svelte - Svelte:如何使用本机 Web API
- python - 在 Python 3.10 上安装 SciPy 时出现问题
- ios - SwiftUI 如何将视图的前导对齐到最超级视图的前导?
- python - 合并点的最快方法是什么?
- wordpress - 获取自定义帖子类型的下一个永久链接 – 它不起作用 – 测试了大量选项 – 没有任何作用
- python - 在 SQLAlchemy Flask 中创建对象时出现 NoForeignKeysError