Linux/UNIX:bc将八进制转换为十六进制或Vise Versa
时间:2020-01-09 10:37:28 来源:igfitidea点击:
如何使用bc UNIX/Linux命令行实用程序将八进制数转换为十六进制数?
八进制数字系统是基数8的数字系统。
它使用数字0到7。
八进制数字系统是基数16的数字系统。
标准数字系统称为基数10(十进制),它使用十个符号:0、1、2、3、4、5、6、7、8、9。
十六进制使用十进制数字,并包含六个额外的符号。
没有符号表示十个或十一个等,因此这些符号是从英文字母中提取的字母:A,B,C,D,E和F。
十六进制A =十进制10,十六进制F =十进制15。
语法
您需要使用以下bc语法来隐藏数字:
# Convert octal to hexa ## echo "obase=16; ibase=8; octal-number-here" | bc ## convert base 8 (octal) number 17 to hexadecimal ## echo "obase=16; ibase=8; 17" | bc
输出示例:
F
其中:
- obase =设置输出基准(例如2、8、10、16)
- ibase =设置输入基数(例如2、8、10、16)
- 17 =将此数字转换为ibase。输入必须根据观测值给出。
要将十六进制转换为八进制,请使用以下语法:
# Convert hexa to octal ## echo "obase=8; ibase=16; hex-number-here" | bc ## convert base 16 (hex) number 10 to octal ## echo "obase=8; ibase=16; 100" | bc
输出示例:
400
下面将把八进制的整个文件转换为十六进制,每行一个:
( echo "obase=16; ibase=8" ; cat octal-data-file.txt ) | bc
printf命令示例
您还可以如下使用printf命令:
## Convert hex # 0x100 to octal base ## printf "%o\n" 0x100
输出示例:
400
或者
## Convert octal # 4242 to hex base ## printf "%x\n" 04242
输出示例:
8a2
请注意,十六进制基数必须以0x为前缀,八进制基数必须以0为前缀。