• ベストアンサー

hex関数について

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

  • Perl
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

カテゴリーがPerlなんだから言語もPerlなんじゃ? でPerlだとして、hex関数の引数は文字列をとりますが 質問の例では整数を渡しています。 そこで、0x41を十進数に変換→65 それを文字列化→”65”→hexにわたされる →十六進文字列として解釈される →十進で出力 →101 となります。

startover
質問者

お礼

どうもありがとうございます! 流れを丁寧に教えていただき、 どうもありがとございます! 解りやすかったです!

その他の回答 (3)

  • pick52
  • ベストアンサー率35% (166/466)
回答No.4

すみません。 下の回答の補足です。 もし、文字コードから16進数文字列を作成したい場合は # 文字列から16進数文字列を作成 my $msg = unpack("H2", "\x41"); # "\x41" は 'A' と同等 print "16進数文字コード: $msg\n"; こんな感じにするか以下のようにします。 # 数値を16進数文字列に変換する my $msg = sprintf("%x", 0x41); print "16進数文字コード: $msg\n"; # 上のコードだけならば # printf("16進数文字コード: %x\n", 0x41); # とすることができる print "数値: " . hex($msg);

startover
質問者

お礼

たびたび どうもです ちょうど 提示いただいたコードな感じのをみていた所ですが unpack packとかがむずかしくて.. サンプルも教えていただきありがとうございます!

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

Perlのhex関数は文字列で表現されている16進数(16進数文字列)を 数値に変換する関数です。 0x41というのは数値ですので print "0x41: " . 0x41 . "\n0x41 == 65: " . (0x41 == 65); とすれば分かるように、0x41 == 65です。 hex(0x41) は hex(65) と同等です。. Perlでは数値型と文字列型は状況に応じて自動で変換されるので この場合、hex関数に渡しているのは '65' という文字列と言うことに なります。

startover
質問者

お礼

どうもありがとうございます! hex関数に渡しているのは '65' という文字列と言うことに なります。 なるほど! どうもです!

  • mahaze
  • ベストアンサー率29% (217/731)
回答No.1

なんの言語かわかりませんが。。。 hex関数は16進数を返す関数なのではないですか? hex(16)としたらどういう結果になりますか? 10となれば10進の”16”を16進の”0x10”に変換したということになりますね。

startover
質問者

お礼

どうもありがとうございます!

関連するQ&A

  • Hex関数

    こんにちは VBでちょっとしたことなんですが、自前の関数を作成するかどうかで悩んでいます。 nバイトの配列データ(dim xx() as Byte と宣言されている)を1バイトあたり2桁で表示したいのですが、Hex関数(あるいはHex$関数)では、0x00 の場合や0~9の場合、"0"や1桁になってしまうんですね。 もし組み込み関数で1バイトを2桁16進数表示できる変換関数があれば、自前のものより高速だし楽だと思い、迷ってます。 「そんなものはないので自分で作れ」とか「こんなのあるよ」とか教えてください。お願いします。

  • 16進数関数のhex関数について

    16進数を扱う、「hex」という関数があったようななかったような・・・。 16進数の文字列を、例えば、「"0a"」という文字列が あって、この"0a"の前に"0x"という文字列を付け足して"0x0a"とし、この"0x0a"を10という整数値に変換したいのですが、どのようなソースファイルになりますか。 初心者なので、どうプログラムを組んで良いのか分かりませんでしたので、教えて下さい。

  • HEX2BIN関数の使い方。

    HEX2BINを使用して16進数4桁を2進数に変換しようとしたところ=HEX2BIN(B2) (B2セルは6F67)としたところ#NUMエラーが出てしまいます。 B2を”B2”にすれば変換ができたのですが今度はオートフィルが使えなくなってしまいます。 なので、=HEX2BIN(B2)で変換できる方法か””をつかってもオートフィルで=HEX2BIN("C2")などにする方法を教えて下さい Excelは2007です。

  • HEX

    HEXで'0x1E','0x1D''0x00' をそれぞれ文字型に1字で入れたいのですがどういう記述をすればよいのでしょうか。

  • HEXデータで1ビットずらしたHEXにするアプリ

    現在、プロトコルアナライザで得た波形データと、実際に送信しているデータとで違いがあるとのことで、たぶんSPI方式と思われる回路でのプロトコルで調査しているところです。 ここで得られたHEXデータ 0x1F,0x40,0x56,0xC7 このHEXデータを 2'0001111, 2'01000000, 2'01010110, 2'11000111 このデータを1bitずつ右にローテートしてずらして、HEXデータを素早く出力してくれるような計算ソフトとかご教示いただけないでしょうか? どうぞ、よろしくお願い致します。

  • hexについて

    応答メッセージなどに関する文書なのですが、hexという表現が出てきます。04hexとか、27hexとか・・・いろいろなのですが、数字プラスhexというのは、どういう意味なのでしょうか。

  • VBA Hex関数

    Hex関数を使用して、16進から10進の処理をしようとしてますが 下記※のところで「型が一致しません」と出てしまいます。 色々変数の型を変えても、2つの※のどちらかで出てしまいます。 Dim r As Long Dim H2D As Long Dim CheckSum_Cal As Long For r = 1 To 10  H2D = Hex(Cells(5, r)) ※ CheckSum_Cal = CheckSum_Cal + H2D ※ Next r Cells(5, r)を別の変数に入れても同じ結果になります。 どなたかお詳しい方、ご教示お願いいたします。

  • HEX。十六進数と、六角形の関係について。

    HEXと言う単語を英和辞書で引くと16進数と六角形と言う言葉が出てきました。 16と6。16進数と六角形は何か通じるところがあるのかなと思い質問してみました。 どうぞよろしくm(_ _)m

  • HEX値

    HEX値 1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F 数字が大きいのは、一番大きいのはFですか? 0は一番小さいですか? それとも1ですか?

  • hex表示したいのですが・・

    テキストの内容をhex表示したいのです。 改行コードとかチェックしたいので。 今は秀丸をエディタとして使っていますが これではhex表示はできませんかねえ? なんかいいフリーソフトとかないでしょうか?