整数を4バイトの配列に変換するにはどうすればよいですか?ここで PHPで整数からバイト配列に変換する方法
は(C#で)私はポートにしたい正確なコードであるint i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
どのように私はPHPで同じことをしますか?
整数を4バイトの配列に変換するにはどうすればよいですか?ここで PHPで整数からバイト配列に変換する方法
は(C#で)私はポートにしたい正確なコードであるint i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
どのように私はPHPで同じことをしますか?
等価変換は
$i = 123456;
$ar = unpack("C*", pack("L", $i));
See it in actionあります。
バイトオーダー(little/bigエンディアン)はマシンアーキテクチャに依存します(BitConverter
の場合も同様です)。それは良いかもしれないかもしれません。
意図したとおりに動作します。ありがとう。 – user1392060
$i = 123456;
$byte_array = unpack('C*', $i);
var_dump($byte_array);
array(6) {
[1]=>
int(49)
[2]=>
int(50)
[3]=>
int(51)
[4]=>
int(52)
[5]=>
int(53)
[6]=>
int(54)
}
申し訳ありませんが、これは間違っています。 "123456"の正しい解決策は、私が投稿した64,226,1,0です。さらに、配列は4つの要素を含む必要があります。あなたには6が含まれています(整数は常に4バイトです) – user1392060
うーん、あなたは正しいです。 PHPはunpack()呼び出しで整数を文字列に変換します。間違った答えを申し訳ありません。 –
PHPのbyte配列の同等が文字列であるので、これはやる:
$bytes = pack('L', 123456);
ていることに可視化するために、bin2hex
を使用します。
echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)
本当かもしれません。しかし、私はまだ配列内の単一のバイトが必要でした。とにかくありがとう。 – user1392060
@user 'echo $ bytes [0]、$ byte [1]、$ byte [2]、$ byte [3];' PHP文字列は*本質的にバイト配列です。 – deceze
ああ、OK!私の無知を許してください。今度はそれについて言及しますが、私はPHPで多くのことを過度に複雑にしていると思います。 – user1392060
あなたがする結果を探しています* 10進数* 64,226などを含む配列?または、実際にPHPで文字列になる*バイト*を探していますか? – deceze