深入分析 Oracle 内部原理的时候不得不经常进行二进制、八进制、十进制、十六进制之间的转换,简单的还好弄,但是长的十六进制或者比较大的十进制数就歇菜了,怎么办呢?Windows 下有个科学计算器(开始->运行->calc 可快速调出来) 但是总觉得不太理想,不是功能的问题,而是“批处理”的问题。我并不想为了这个问题而动用C#写一个功能强大且符合心意的程序,要知道从头再写一次类型转换程序要处理数据溢出、各种异常,到头来还不一定比 calc 优秀和稳定。于是乎我将目转向了 perl,借助几个函数的确很快完成了任务(不足50行代码),但还是要面对数据溢出等等各种问题。
借助 google 寻找一下解决方案,发现 Linux 的 shell 就可以很好地完成这个任务,而且非常简单:
echo 'ibase=16;obase=2;ABCDE123456789' | bc # output : # 10101011110011011110000100100011010001010110011110001001
只要简单设定一下 ibase(输入是几进制)和 obase(输出是几进制,十进制的时候要省略不写),注意一下输入的ABCDEF要大写,剩下的就交给 bc ,也就是Linux 下的科学计算器就可以了,出了问题也容易调试。
再看看如何做批处理:
echo " ibase=16;obase=2; A C E " | bc # output : # 1010 # 1100 # 1110
非常简单而且直接。
以上是在工作中遇到的,拿出来作为例子,很多时候我们无需重新构造轮子,多少前辈为我们做好了轮子,我们只管去用就可以了,这也是我越来越喜欢使用Linux的原因,准确来说是 Linux 的 shell,而不是 Gnome 和 KDE,很多比较头痛的问题借助几个命令和管道符就可以完成了。
我装 Linux 喜欢完全安装,现在是没有必要了,CentOS 4.7 也就是 RHEL 4.7 的社区版可以选择完全安装,但是到了版本5就麻烦了,带上一堆虚拟化、集群什么的,而且是没有一个按钮、选项可以选择“全部安装”,即使是这样,装 Linux 我会尽量多安装,管理包、开发工具、类库这些都回完全安装,其他图形和声音就不管了。