基数変換

10進数と16進数と2進数の変換例

# perl -e '$n=12345; $s = unpack("H*", pack("N*", $n)); $s=~s/^0*//g; $n=$hex; print $s;'
3039

# perl -e '$n=12345; $s = unpack("N*", pack("N*", $n)); $s=~s/^0*//g; $n=$hex; print $s;'
12345

# perl -e '$n=12345; $s = unpack("B*", pack("N*", $n)); $s=~s/^0*//g; $n=$hex; print $s;'
11000000111001

# perl -e '$n=0x3039; $s = unpack("N*", pack("N*", $n)); $s=~s/^0*//g; $n=$hex; print $s;'
12345

# perl -e '$n=0b11000000111001; $s = unpack("N*", pack("N*", $n)); $s=~s/^0*//g; $n=$hex; print $s;'
12345

と思ったら、以下のほうがずっと簡単だった。

# perl -e '$n=12345; print sprintf("%x",$n);'
3039

# perl -e '$n=12345; print sprintf("%b",$n);'
11000000111001

# perl -e '$n=12345; print sprintf("%o",$n);'
30071