sprintf
16進数への変換に使用- 例 >>
$hex = sprintf("0x%x",$d)
しかし、 なしでそれを行う別の方法があるかどうか疑問に思っていましたsprintf
。
私の目標は、数値を 4 バイトの 16 進コードに変換することです (例: 013f571f
)
4 * %0xxxxxxx
さらに(オプションで)、数値がフォーマットされている場合、バイトあたりわずか7ビットを使用して、そのような変換を行うにはどうすればよいですか?
sprintf
16進数への変換に使用- 例 >>
$hex = sprintf("0x%x",$d)
しかし、 なしでそれを行う別の方法があるかどうか疑問に思っていましたsprintf
。
私の目標は、数値を 4 バイトの 16 進コードに変換することです (例: 013f571f
)
4 * %0xxxxxxx
さらに(オプションで)、数値がフォーマットされている場合、バイトあたりわずか7ビットを使用して、そのような変換を行うにはどうすればよいですか?
sprintf()
おそらく最も適切な方法です。http://perldoc.perl.org/functions/hex.htmlによると:
2番目の質問についてはよくわかりませんが、unpack()
そこで役立つようです。
4 * %0xxxxxxx
フォーマットについては、私の非sprintf
解決策は次のとおりです。
print unpack("H8", pack("N1",
(((($d>>21)&0x7f)<<24) + ((($d>>14)&0x7f)<<16) + ((($d>>7)&0x7f)<<8) + ($d&0x7f))));
コメントや改善点は大歓迎です。