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为前缀。