• ベストアンサー

文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

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

  • ベストアンサー
回答No.2

<?php $b16 = strtoupper(bin2hex("agagagagaga")); $new_b16 = ''; for($i=0;$i<strlen($b16)-2; $i+=2){ $new_b16 .= $b16[$i].$b16[$i+1].","; } $new_b16 .= $b16[$i].$b16[$i+1]; ?> こんな感じでしょうか。 まず、bin2hexで16進数にしてやって、strtoupperで小文字を大文字に変換します。 PHPでは文字列を変数に追加すると、変数に添え字をつけると1バイトずつ取り出すことが出来るので、for文でまわしてやって、2回に一回カンマをつければよいかと思います。

masaki85
質問者

お礼

ありがとうございます。","を"."にすることにより解決しました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

いっぱつでなくていいならこんなかんじで <? $str="1a2b3c4d5e6f"; $str=preg_replace("/../e","strtoupper('$0').'.'",$str); $str=chop($str,"."); print $str; ?>

masaki85
質問者

お礼

ありがとうございます。参考になりました。

関連するQ&A