如何創建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