我有一个看起来像这样的文件,是用 Python 计算的:
1.00000100e+07
1.00000000e+04
1.11000111e+08
1.11000000e+05
现在,我想获得这样的东西:
010000010
000010000
111000111
000111000
这个想法是我想添加零以获得 9 位的固定格式。我编写的 Python 代码给了我二进制数,但为了进一步解码,我需要这些二进制数有 9 位。我试图从 Python 以所需的格式获取它们,但我无法做到这一点。
我希望我的解释清楚。
更新:
Python代码:
#!/usr/bin/env python3
import numpy as np
from numpy import genfromtxt
import os
day = os.environ.get('day')
Array = genfromtxt("SUC_diffzeros_"+str(day)+".csv")
final = np.zeros(len(Array))
def decimaltobinary(x):
for i in range(len(x)):
print(x[i])
final[i] = "{0:09b}".format(x[i])
print(final)
var = np.column_stack([Array, final])
np.savetxt("SUC_diffzeros_"+str(day)+".csv", var, fmt='%.8e')
if __name__ == '__main__':
val = Array.astype(int)
decimaltobinary(val)
或者:
这也转换为整数。
1.1
您会看到数字上的差异,例如111000111.9
前者会给出:而后者:
另请参阅
awk '{printf "%09.0f\n", $0}'
哪些回合:使用Raku(以前称为 Perl_6)
或者
样本输入:
样本输出:
根据文档,“这个函数
sprintf
(字面意思。”指令
"%09d"
或q[%09d]
将输入视为有符号整数(十进制),左填充0
零到9
九位。注意事项:如有必要,
sprintf
还具有#
指令,其中(除其他外),'前缀(es)非零二进制与“0b”或“0B”'。#
如果您更改 Python 输出格式,此指令可能很有用(有关详细信息,请参阅文档)。https://docs.raku.org/routine/sprintf
https://raku.org