gpt4 book ai didi

string - 用于获取字符串中每个字符的 ASCII 码的 Tcl

转载 作者:行者123 更新时间:2023-12-04 10:59:05 28 4
gpt4 key购买 nike

我需要为字符串中的每个字符获取 ASCII 字符。实际上它是(小)文件中的每个字符。以下前 3 行成功地将文件的所有内容拉入一个字符串(每 this recipe ):

set fp [open "store_order_create_ddl.sql" r]
set data [read $fp]
close $fp

我相信我正确地识别了字符的 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)"
}

输出:
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)

最佳答案

以下代码应该可以工作:

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

至于输出中的额外字符,问题似乎出在文件中的输入数据上。是否有某种原因在文件中的每个字符之间会有空字符 (\0)?

关于string - 用于获取字符串中每个字符的 ASCII 码的 Tcl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com