如何创建TCL
回答
Tcl处理字节数组,就好像它们是仅包含从U + 0000到U + 00FF的字符的字符串(即,就好像它们是ISO 8859-1字符一样)。在实现中有一些细节(它们是作为字节数组在Tcl的内部传输的,而不是完整的Unicode字符串或一些可怕的字节序列),但是您只是将它们视为字符串。
为了使NUL字节是19个字节长的字符串,你这样做:
set byte2 [string repeat "\u0000" 19]
然后你可以使用binary
命令就可以了(或encoding convertfrom
操作来重新解释它在其他一些字符串编码)。你真的不应该在乎它是字节还是字符,或者你的脚本中的任何东西。特别是,Tcl有很多命令可以对字符串进行操作,并且它们在字节数组上也可以使用以及。
真正重要的是它是否真的是一个字节数组,当你在C API中工作时。此时,如果您需要读取字节数组,您可以使用Tcl_GetByteArrayFromObj
来获得真实的字节数组(尽管在C中为unsigned char
),但如果不创建字节数组,则不应该修改该字节数组,如果Tcl_Obj
上的引用计数大于1(即,如果Tcl_IsShared
返回真值;如果是,则复制Tcl_DuplicateObj
以获取可以修改的内容,但必须确保正确地存储或取消分配)。
字符串和字节数组之间的区别很重要:将这些数据写入某种有线格式或从中读取。 – kostix 2012-08-14 08:16:34
我想进一步澄清Donal写了些什么。
应该强调的一点是,在Tcl中,一个字节数组上的操作大多像字符串一样。我的意思是,代码
byte[] byte2 = new byte[19];
暗示那么OP会想随机访问byte2
C风格数组的元素,用新值等
相反,这样的事情在Tcl的工作方式不同取而代之。如果想要使用索引化的几乎是C风格的数组,则应该使用list
s代替,并且只在将数据序列化为数据时将结果列表转换为实际字节字符串(使用binary format
命令)一个有线格式(或写入一个文件或其他)。当结果字节数组逐渐形成时,通过逐个附加值,另一种方法很方便;在这种情况下,应该简单地使用binary format
和append
。
我希望OP看看处理二进制编码的tcllib中的一些模块(base64
是一个明显的候选人)。
- 1. 如何在tcl中创建线程8.4
- 2. 如何使用tcl创建csv文件
- 3. TCL创建列表
- 4. 如何在无标题栏的tcl中创建窗口
- 5. 如何在tcl tk中创建超链接?
- 6. tcl:如何使用变量的值创建一个新变量
- 7. 如何在Tcl中创建数据结构?
- 8. 如何创建一个HTML表格与TCL
- 9. 如何在tcl中创建彩色字体
- 10. 如何在TCL中创建RFC 3339时间戳?
- 11. 如何创建一个TCL不透明TEAPOT
- 12. 如何在TCL中创建并遍历散列哈希值?
- 13. 如何为Tcl包创建安装脚本
- 14. 如何在tcl中创建枚举数据类型?
- 15. 如何使用tcl脚本创建日志文件
- 16. 在TCL中创建一个列表
- 17. 的Tcl:命令名称创建
- 18. 如何在TCL
- 19. 如何与TCL
- 20. Tcl的API如何从Tcl的
- 21. 如何使用TCL
- 22. 如何使用TCL
- 23. 如何使用tcl
- 24. 如何使用TCL
- 25. 如何从expect/TCL脚本中的转储文件创建MySQL数据库?
- 26. 如何在tcl/tk中创建一个无模式的对话框
- 27. TCL:如何创建一个选择其他检查按钮的检查按钮
- 28. 如何等待Tcl/Tk顶层构件在继续之前创建?
- 29. 如何使用tk/tcl创建可调整大小的小部件
- 30. 如何在TCL中使用foreach创建两个元素的所有组合
你为什么要这么做?我在问,因为有不同的解决方案,取决于你需要做什么 – 2012-08-14 07:03:37