你如何在Python / Bash / AWK中使用二进制转换?

时间:2009-04-16 15:14:46

标签: python bash binary awk

我是二进制转换的新手。 我每天都使用Python,Bash和AWK。

我想在这些语言中看到二进制转换的应用程序。 例如,我对你在工作中解决的问题感兴趣。

你在Python / Bash / AWK中使用二进制转换的地方在哪里?

我想看看代码示例。

3 个答案:

答案 0 :(得分:3)

在命令行上使用Python将二进制数字字符串转换为数字:

binary=00001111
DECIMAL=$(python -c "print int('$BINARY', 2)")
echo $decimal

请参阅int function的文档。

哦,等等,我误解了这个问题,你想知道转换成二进制文件的原因是什么。那么,这取决于你的意思是“转换为二进制”。假设我想存储一个包含一百万个整数的文件。整数将介于0到32,000之间。如果我将它们存储为文本,则每个数字最多需要两个字节(单个数字和一个分隔符),最差的是六个字节(五位数和一个分隔符),平均大小为每个数字4.6个字节(看数学评论)。我也没有简单的方法来选择第15个数字。如果我将它们存储为16位整数(二进制),则每个数字将占用恰好两个字节,我可以通过seek找到第15个数字来偏移2*(15-1)并读取两个字节。此外,当我在基于文本的版本上进行数学运算时,我(或我的语言)必须首先将字符串转换为数字,而二进制版本已经是16位数字。

因此,简而言之,您使用二进制类型

  1. 节省空间
  2. 具有一致的记录大小
  3. 加快计划

答案 1 :(得分:2)

在shell中,很好地使用了dc

echo 2i 00001111 pq | dc

2i表示:输入数字的基数为2

pq表示:打印并退出

另一种方式是:

echo 2o 15 pq | dc

我不记得在实际情况中使用过此功能。

答案 2 :(得分:0)

在较新版本的Python中存在bin()函数,我认为它接受一个int并返回一个二进制文字,形式为0b011010或其他。