1

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

我想看看二进制转换在这些语言中的应用。例如,我对您在工作中通过它解决的问题感兴趣。

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

我想看看代码示例。

4

3 回答 3

3

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

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

请参阅int 函数的文档。

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

所以,简而言之,你使用二进制类型来

  1. 节省空间
  2. 具有一致的记录大小
  3. 加快程序
于 2009-04-16T15:36:17.597 回答
2

在 shell 中,很好地使用dc

echo 2i 00001111 pq | dc

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

pq 表示:打印和退出

另一种方式是:

echo 2o 15 pq | dc

我不记得在现实世界中使用过这个功能。

于 2009-04-16T15:45:12.053 回答
0

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

于 2011-07-06T17:35:53.217 回答