Geo*_*pty 7 string ascii list tcl utf-16
我需要为字符串中的每个字符获取ASCII字符.实际上它是(小)文件中的每个字符.以下前3行成功将所有文件的内容拉入字符串(根据此配方):
set fp [open "store_order_create_ddl.sql" r]
set data [read $fp]
close $fp
Run Code Online (Sandbox Code Playgroud)
我相信我正确地辨别出字符的ASCII码(参见http://wiki.tcl.tk/1497).但是我在弄清楚如何遍历字符串中的每个字符时遇到了问题.
首先,我不认为以下是用Tcl循环字符串中的字符的特殊惯用方法.其次,更重要的是,它行为不正确,在每个字符之间插入一个额外的元素.
下面是我编写的代码,用于处理上面"数据"变量集的内容,然后是一些示例输出.
码:
for {set i 0} {$i < [string length $data]} {incr i} {
set char [string index $data $i]
scan $char %c ascii
puts "char: $char (ascii: $ascii)"
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
char: C (ascii: 67)
char: (ascii: 0)
char: R (ascii: 82)
char: (ascii: 0)
char: E (ascii: 69)
char: (ascii: 0)
char: A (ascii: 65)
char: (ascii: 0)
char: T (ascii: 84)
char: (ascii: 0)
char: E (ascii: 69)
char: (ascii: 0)
char: (ascii: 32)
char: (ascii: 0)
char: T (ascii: 84)
char: (ascii: 0)
char: A (ascii: 65)
char: (ascii: 0)
char: B (ascii: 66)
char: (ascii: 0)
char: L (ascii: 76)
char: (ascii: 0)
char: E (ascii: 69)
Run Code Online (Sandbox Code Playgroud)
RHS*_*ger 11
以下代码应该有效:
set data {CREATE TABLE}
foreach char [split $data ""] {
lappend output [scan $char %c]
}
set output ;# 67 82 69 65 84 69 32 84 65 66 76 69
Run Code Online (Sandbox Code Playgroud)
对于输出中的额外字符,似乎问题在于来自文件的输入数据.是否有某些原因在文件中的每个字符之间都会有空字符(\ 0)?
| 归档时间: |
|
| 查看次数: |
19110 次 |
| 最近记录: |