hex関数のように10進数から2進数に変換する関数はないでしょうか?
もしあれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

hex に相当する“bin 関数”というのは標準ではありませんが、sprintf で代用できますよ。


以下のサンプルプログラムをご覧下さい。

$a = 123;
print sprintf("%b\n", $a);

実行結果 → 1111011

桁数を指定したければ、%b の代わりに %016b などとすればOKです。
(この場合、結果は 0000000001111011 となります。)
    • good
    • 0
この回答へのお礼

ありがとうございます。

一応調べて、
unpack("B*",pack("N", 123 ));
でとってくるようにしていました。

sprintfがありましたね。忘れてました。

お礼日時:2001/12/05 14:10

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qhex関数について

print hex( 0x41 );        結果 101

ですが
0x41は 16進数41で  10進数の65ですね?
なぜ101となるんでしょうか?
教えてください。

Aベストアンサー

カテゴリーがPerlなんだから言語もPerlなんじゃ?

でPerlだとして、hex関数の引数は文字列をとりますが
質問の例では整数を渡しています。
そこで、0x41を十進数に変換→65
それを文字列化→”65”→hexにわたされる
→十六進文字列として解釈される
→十進で出力
→101

となります。

QURLを進数で表す方法

お世話になります。

掲示板などで、検索項目があると思います。
たとえば、テスト投稿という文字で検索した場合、http://○○.com/index.cgi?kensaku-koumoku=テスト投稿というURLになったとします。これをhttp://○○.com/index.cgi?kensaku-koumoku=%83e%83X%83g%93%8A%8DeなURLにしたいのです。

最初の検索の際は、上記のようになってくれるのですが、検索項目に当てはまる投稿が多い場合、次へというリンクがありそこにはkensaku-koumoku=テスト投稿となってしまいます。どのようにしたら、次へのリンクもkensaku-koumoku=%83e%83X%83g%93%8A%8Deのように出来るのでしょうか。
どなたか方法を教えていただけませんか。
宜しくお願いします。

Aベストアンサー

 俺が使ってる方法は、"?" よりも右側についてのみ、

  $result =~ s/(\W)/'%'.unpack("H2", $1)/ego;

 というURLで置き換えてしまう奴です。

QLEFT関数のようなもの(7桁の数字から左の3桁の数字を抜き出す)

はじめての質問です、よろしくお願いします。

ホームページでのアクセス制限を行うフリーcgiを修正・改造して、目的にかなうように作り替えたいのです。

このアクセス制限で行いたいのは
 ・パスワードに7桁の数字を入力(例:1234567)
 ・左の3桁(123)だけをパスワードリストに照合。

この「7桁の数字から左の3桁の数字を抜き出す」という部分にお手上げの状態です。

LEFT関数の様なもの、または、そのような処理をする方法について、アドバイスやヒントをお願い致します。

また、入力されたパスワードが7桁かどうかのチェック方法についてもよろしければアドバイス下さい。

Aベストアンサー

substr(文字列,取り出す最初の位置,取り出す長さ)

というのを使えばOKです。

文字数を数えたいのであれば
length(文字列)
がいいかと。(ただしバイト数ですので)

Qsprintfで10進数を桁数指定で16進数に変換する方法

10進数から16進数への変換自体は分かります。
$hex = sprintf("%lx",$decimal);
で出来るのですが、例えば、10進数の10を16進数の0x00000Aと常に6桁にして出力するにはどうすればよいでしょう?(先頭の0xは出力しなくてもいいです。)
手元のPerl辞典には、sprintfの形式指定で出来るとなっており、指定パラメータとしてm(最小幅)というのが載っているのですが、実際の使い方の用例が無く、色々試したのですが、上手く行きません。
どなたか詳しい方、ズバッとコマンド記述の実例を一行お願いいたします。

Aベストアンサー

単純に
$hex=sprintf("%06X",$decimal);
フラグにて 0 数値の前を0で埋める。
      6 その桁数
      X 16進数(大文字)
では? 

Qrequire後、関数を実行時にサブルーチンが存在すれば実行させたい

perlでrequire後、関数を実行時にサブルーチンが存在すれば実行させたいのですが、どうやれば調べられるかご存知でしたらご教授願えませんでしょうか。
foreach(...){
require "$file";
&Print;・・・ここでエラーが出てしまうのを関数が存在する場合だけ実行するようにしたいのです。
}

宜しくお願い致します。

Aベストアンサー

じゃあ最強の手段, 型グロブに対する参照でどうだ.
if (defined *Print{CODE})
とか (Print が foo パッケージで定義されているなら)
if (defined *{$foo::{Print}}{CODE})
とか.


おすすめ情報