文字列内のすべての文字の ASCII 文字を取得する必要があります。実際には、(小さな)ファイル内のすべての文字。次の最初の 3 行は、すべてのファイルの内容を文字列に正常にプルします (このレシピに従って):
set fp [open "store_order_create_ddl.sql" r]
set data [read $fp]
close $fp
文字の ASCII コードを正しく認識していると思います ( http://wiki.tcl.tk/1497を参照)。ただし、文字列内のすべての文字をループする方法を理解するのに問題があります。
まず第一に、以下は Tcl を使用して文字列内の文字をループする特に慣用的な方法ではないと思います。2 つ目は、さらに重要なことですが、すべての文字の間に余分な要素が挿入され、正しく動作しません。
以下は、上記で設定した「データ」変数の内容に基づいて動作するように記述したコードと、それに続くサンプル出力です。
コード:
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)"
}
出力:
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)