我是二进制转换的新手。我每天都使用 Python、Bash 和 AWK。
我想看看二进制转换在这些语言中的应用。例如,我对您在工作中通过它解决的问题感兴趣。
在 Python/Bash/AWK 中,你在哪里使用二进制转换?
我想看看代码示例。
在命令行上使用 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 位数字。
所以,简而言之,你使用二进制类型来
在 shell 中,很好地使用dc
:
echo 2i 00001111 pq | dc
2i 表示:输入数字的基数是 2。
pq 表示:打印和退出。
另一种方式是:
echo 2o 15 pq | dc
我不记得在现实世界中使用过这个功能。
在较新版本的 Python 中,存在bin()
我认为采用 int 并返回二进制文字、形式0b011010
或其他形式的函数。