1. ホーム
  2. bash

[解決済み] シェルスクリプトで16進数から10進数への変換

2022-05-08 05:54:27

質問

シェルスクリプトで16進数から10進数に変換するのを手伝ってくれる人はいますか?

例:16進数を変換したい bfca3000 を10進数に変換するシェルスクリプトを使用します。基本的には2つの16進数の差分が欲しいのですが。

私のコードは

var3=`echo "ibase=16; $var1" | bc`
var4=`echo "ibase=16; $var2" | bc`
var5=$(($var4-$var3))               # [Line 48]

実行すると、こんなエラーが出ます。

Line 48: -: syntax error: operand expected (error token is "-")

解決方法は?

16進数から10進数への変換は、シェルで行う方法と外部プログラムで行う方法とがあります。

バッシュ :

$ echo $((16#FF))
255

bc :

$ echo "ibase=16; FF" | bc
255

パール :

$ perl -le 'print hex("FF");'
255

プリントフィー :

$ printf "%d\n" 0xFF
255

パイソン :

$ python -c 'print(int("FF", 16))'
255

ルビー :

$ ruby -e 'p "FF".to_i(16)'
255

node.js :

$ nodejs <<< "console.log(parseInt('FF', 16))"
255

サイ :

$ rhino<<EOF
print(parseInt('FF', 16))
EOF
...
255

グルーヴィー :

$ groovy -e 'println Integer.parseInt("FF",16)'
255