Tclbinary命令格式字符串
命令⽤于操作⼆进制字符串。binary format⼦命令可以将普通Tcl字符串按格式字符串转换为⼆进制字符串。
格式字符串是由字段说明符组成的序列,多个字段说明符可以⽤零或多个空格分隔。字段说明符格式如下:
type?flag??count?
其中type为类型字符表⽰如何进⾏格式化,flag是可选的标志字符,count是可选的⾮负的⼗进制整数,表⽰从值中提取多少指定类型的项,如果count为“*”则表⽰提取所有指定类型的项。
类型字符
字符说明
a 在输出字符串中保存count长度的字节字符,每个字符都按256取模,所以当字符不在\u0000-\u00ff范围内时,如果不想丢弃⾼字节位,那么需要先⽤encoding convertto命令来改变字符串的外部表⽰。如果字符串的字节数⼩于count,则使⽤额外的0字节填充。如果字符串的字节数⼤于count,则多余的字节会被忽略。如果count为“*”,则格式化所有字节。如果未指定count,则默认为1。
A与a唯⼀的不同是使⽤空格填充⽽不是0字节。
b 将⼆进制字符串转换为字节字符串,每个字节中保存count长度的低位在前的⼆进制数字。如果⼆进制数字数⼩于count,则⽤0填充剩余位。如果⼆进制数字数⼤于count,则忽略多余的⼆进制数字。如果count为“*”,则格式化所有⼆进制数字。如果未指定count,则默认为1。
B与b唯⼀的不同是输出的字符串的每个字节保存⾼位在前的⼆进制数字。h与b类似,唯⼀不同的是h⽤于格式化⼗六进制字符数字。
H与h唯⼀的不同是⾼位在前。
c 输出字符串为8位整型。对于每个要格式化的整型数字,只保留其低8位。如果指定count,则输⼊为不少于count个整型值的列表,多余的值会被忽略。如果count为“*”,则格式化列表中所有整型值。如果未指定count,则输⼊必须为⼀个整型值,否则会产⽣错误。如果列表元素数量⼩于count会产⽣错误。
格式化命令format参数s与c唯⼀不同的是输出字符串为16位整型。存储时低字节优先。S与s唯⼀不同的是存储时⾼字节优先。
t 与s、S唯⼀不同的是输出字符串中的16位整型按运⾏Tcl脚本的机器的本地字节顺序存储。机器的本
地字节顺序可以通过tcl特殊变量tcl_platform的byteOrder索引查看。
i与c唯⼀不同的是输出字符串为32位整型。存储时低字节优先。I(⼤写i)与i唯⼀不同的是存储时⾼字节优先。
n 与i、I唯⼀不同的是输出字符串中的16位整型按运⾏Tcl脚本的机器的本地字节顺序存储。机器的本地字节顺序可以通过tcl特殊变量tcl_platform的byteOrder索引查看。
w与c唯⼀不同的是输出字符串为64位整型。存储时低字节优先。W与w唯⼀不同的是存储时⾼字节优先。
m 与w、W唯⼀不同的是输出字符串中的64位整型按运⾏Tcl脚本的机器的本地字节顺序存储。机器的本地字节顺序可以通过tcl特殊变量tcl_platform的byteOrder索引查看。
f 与c的不同是以机器的本机表⽰形式保存单精度浮点数。这种表⽰不能跨体系结构移植,所以不能跨⽹络通信。如果值溢出机器的本地表⽰,则使⽤系统定义的FLT_MAX值。由于Tcl内部使⽤双精度浮点数,所以在转换为单精度时可能会有⼀些精度损失。
r与f不同的是存储单精度浮点数时低字节优先。这种转换只在使⽤IEEE浮点表⽰的机器上产⽣有意义的输出。R与r唯⼀不同的是存储单精度浮点数时⾼字节优先。
d与f唯⼀不同的是保存的是双精度浮点数。
q与d不同的是存储双精度浮点数时低字节优先。这种转换只在使⽤IEEE浮点表⽰的机器上产⽣有意义的输出。
Q与q唯⼀不同的是存储双精度浮点数时⾼字节优先。
x在输出字符串中保存count个空字节。如果不指定count则默认为1,如果count为“*”则会产⽣错误。这种类型不消耗输⼊参数。
X 将输出字符串的光标往回移动count字节。如果不指定count则默认为1,如果count为“*”或者⼤于当前光标位置,则光标会定位在位置0,下⼀个字节将是字符串中的第⼀个字节。这种类型不消耗输⼊参数。
@将输出字符串的光标移动到count位置处。如果count⼤于当前输出字符串的长度,则⽤空字节填充超过长度的部分,然后将光标移动到指定的位置。如果count为“*”则将光标移动到当前输出字符串的末尾。如果不指定count会产⽣⼀个错误。这种类型不消耗输⼊参数。
标志字符
标志字符“u”可以将某些类型按⽆符号值读取。该标志适⽤于⾮整数类型之外的所有类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论