Tcl binary命令格式字符串

binary命令用于操作二进制字符串。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会产生错误。
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”可以将某些类型按无符号值读取。该标志适用于非整数类型之外的所有类型。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值