Linux内核实现进制转换,利用LINUX命令bc实现进制转换(转)

深入分析 Oracle 内部原理的时候不得不经常进行二进制、八进制、十进制、十六进制之间的转换,简单的还好弄,但是长的十六进制或者比较大的十进制数就歇菜了,怎么办呢?Windows 下有个科学计算器(开始->运行->calc 可快速调出来) 但是总觉得不太理想,不是功能的问题,而是“批处理”的问题。我并不想为了这个问题而动用C#写一个功能强大且符合心意的程序,要知道从头再写一次类型转换程序要处理数据溢出、各种异常,到头来还不一定比 calc 优秀和稳定。于是乎我将目转向了 perl,借助几个函数的确很快完成了任务(不足50行代码),但还是要面对数据溢出等等各种问题。

借助 google 寻找一下解决方案,发现 Linux 的 shell 就可以很好地完成这个任务,而且非常简单:

1

echo 'ibase=16;obase=2;ABCDE123456789' | bc

2

# output :

3

# 10101011110011011110000100100011010001010110011110001001

只要简单设定一下 ibase(输入是几进制)和 obase(输出是几进制,十进制的时候要省略不写),注意一下输入的ABCDEF要大写,剩下的就交给 bc ,也就是Linux 下的科学计算器就可以了,出了问题也容易调试。

再看看如何做批处理:

01

echo "

02

ibase=16;obase=2;

03

A

04

C

05

E

06

" | bc

07

# output :

08

# 1010

09

# 1100

10

# 1110

非常简单而且直接。

以上是在工作中遇到的,拿出来作为例子,很多时候我们无需重新构造轮子,多少前辈为我们做好了轮子,我们只管去用就可以了,这也是我越来越喜欢使用Linux的原因,准确来说是 Linux 的 shell,而不是 Gnome 和 KDE,很多比较头痛的问题借助几个命令和管道符就可以完成了。

我装 Linux 喜欢完全安装,现在是没有必要了,CentOS 4.7 也就是 RHEL 4.7 的社区版可以选择完全安装,但是到了版本5就麻烦了,带上一堆虚拟化、集群什么的,而且是没有一个按钮、选项可以选择“全部安装”,即使是这样,装 Linux 我会尽量多安装,管理包、开发工具、类库这些都回完全安装,其他图形和声音就不管了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值