1

sprintf16進数への変換に使用- 例 >>

$hex = sprintf("0x%x",$d)

しかし、 なしでそれを行う別の方法があるかどうか疑問に思っていましたsprintf

私の目標は、数値を 4 バイトの 16 進コードに変換することです (例: 013f571f)

4 * %0xxxxxxxさらに(オプションで)、数値がフォーマットされている場合、バイトあたりわずか7ビットを使用して、そのような変換を行うにはどうすればよいですか?

4

4 に答える 4

4

sprintf()おそらく最も適切な方法です。http://perldoc.perl.org/functions/hex.htmlによると:

何かを 16 進数として表示するには、printfsprintf、およびunpackを調べます。

2番目の質問についてはよくわかりませんが、unpack()そこで役立つようです。

于 2013-06-24T15:37:36.897 に答える
0

4 * %0xxxxxxxフォーマットについては、私の非sprintf解決策は次のとおりです。

print unpack("H8", pack("N1", 
  (((($d>>21)&0x7f)<<24) + ((($d>>14)&0x7f)<<16) + ((($d>>7)&0x7f)<<8) + ($d&0x7f))));

コメントや改善点は大歓迎です。

于 2013-06-24T15:57:56.940 に答える