温馨提示:本文翻译自stackoverflow.com,查看原文请点击:formatting - zero padding in TCL
formatting padding tcl zero

formatting - TCL中的零填充

发布于 2020-05-02 03:01:56

我的tcl代码如下所示:

set writes 1a8000028020900

binary scan [binary format H* $writes] B* bits
puts "$bits"

输出:

0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

如果输入的十六进制值的长度是偶数,则将没有填充。如果是奇数,例如上面的示例,则填充零。

如果格式化的位数不以字节边界结尾,则最后一个字节的剩余位将为零。如何避免这种填充

查看更多

提问者
Manoj Kumar
被浏览
26
mrcalvin 2020-02-13 07:28

如果格式化的位数不以字节边界结尾,则最后一个字节的剩余位将为零。如何避免这种填充?

好了,您将必须计算并告知binary scan目标位数。也许有比这更优雅的方法,但是为什么不简单地自己动手做呢?

% set writes 1a8000028020900
1a8000028020900
% set hexLength [string length $writes]
15
% binary scan [binary format H* $writes] B[expr {$hexLength * 4}] bits
1
% puts $bits
000110101000000000000000000000101000000000100000100100000000