Perlで2進数<−>16進数の相互変換

[上に] [前に] [次に]
やま [E-Mail] 1998/12/12(土) 03:39:23
しょーもないことですいません。
Perlで2進数<−>16進数の相互変換を行う関数はあるのでしょうか。自分なりに調べてみたのですが見あたらなかったもので。

B-Cus 1998/12/13(日) 02:39:03

例えばこんな感じ。正しく動く保証はありません。
16進←→10進はsprintfやhexで。

$num=255;
$digit="11111111";

printf "%d(10) = %x(16) = %s(2)\n",$num,$num,&dec2bin($num);
printf "%s(2)  = %x(16) = %s(10)\n",$digit,&bin2dec($digit),&bin2dec($digit);

sub dec2bin($){
 local($_) = @_;
 local($result);
 do {
  $result = ($_ & 1)."$result";
  $_ >>= 1;
 } while($_);
 return $result;
}


sub bin2dec($){
 local($_) = @_;
 local($result);
 foreach ( split(//,$_) ){
  $result += ($_ & 1);
  $result *= 2;
 }
 $result /= 2;
 return $result;
}

B-Cus 1998/12/13(日) 02:48:09
あ、書き忘れナリ。

  CPANなどをあさればn進数変換ライブラリが絶対見付かるはず…ですが、
  見付けられませんでした。

を最初に書こうと思ってたナリよ。

やま 1998/12/15(火) 04:06:42
[[解決]]
ご丁寧にお答えいただき、ありがとうございました。
なんせPerl(CGI)もぐりなのですみません。専用の関数が無ければ自分で変換ルーチンを作らなければならないかなと考えていたので、ここまで面倒をみていただけて感激です。ありがたく使わせていただきます。
ついでといっては何ですが、'CPAN'というのを知らないので教えていただければ幸いです。

mura 1998/12/15(火) 09:49:16
CPANにはPerl関連のライブラリなどが置いてあります。
http://www.cpan.org/
ftp://ftp.dti.ad.jp/pub/lang/CPAN/index.html

[上に] [前に] [次に]