【发布时间】:2017-04-29 15:14:14
【问题描述】:
我从 sqlite3 得到的值可以用十六进制写成“0x0D 0x0A”。是的,它是(CR)和(LF)。我想知道我拥有的数据长度。但是命令“字符串长度”返回 1,而不是 2。“字符串字节长度”也返回 1。如何获得正确的数据长度(以字节为单位)?
这是一个简单的例子。在实际程序中,我从 sqlite 获得了不同的文本数据,编码未知。我只需要以字节为单位获取数据长度。但是文本中的每个 (CR)(LF) 都计为 1 个字节。 从 sqlite 和文件中获取数据的示例:
sqlite dbcmd messages.db
set t [dbcmd message from messages limit 1,1]
string length $t
set f [open test.txt r]
set t [read $f]
string length $t
(Windows 7,ActiveTcl 8.6.4,tclkit 8.6.6)
【问题讨论】:
-
不要使用
string bytelength,除非你真的想知道 C 级别的特定形式的值所需的存储大小。对于 Tcl 脚本级别的任何人来说,它很少有用(我有代码在发布运行时生成的汇编代码时实际使用它,但这确实是一个非常不寻常的用例……)
标签: tcl