PHP字符串到";无符号长“;(来自C+;+;) C++中有这个代码,它返回输出以下数< /p> int main(int argn, char** argv) { cout << (*((unsigned long*)"P3TF")) << endl; cin.get(); return 0; } int main(int argn,char**argv) { cout

PHP字符串到";无符号长“;(来自C+;+;) C++中有这个代码,它返回输出以下数< /p> int main(int argn, char** argv) { cout << (*((unsigned long*)"P3TF")) << endl; cin.get(); return 0; } int main(int argn,char**argv) { cout,php,c++,long-integer,unsigned,pack,Php,C++,Long Integer,Unsigned,Pack,如果它在实际代码中是字面上的“P3TF”,为什么不转换一次,并在PHP代码中定义一个常量呢 如果不能做到这一点,你需要的不是打包,例如跑步 <?php $in = 'P3TF'; $arr = unpack('N', $in); printf("%08x\n", $arr[1]); ?> 给出50335446,这是十六进制格式的'p''3''T''F'的ASCII码(串联) C++中的代码基本上是错误的。它不能保证代码>长< /Cub > 4字节。而且,C++中使用的方法在PH

如果它在实际代码中是字面上的“P3TF”,为什么不转换一次,并在PHP代码中定义一个常量呢

如果不能做到这一点,你需要的不是打包,例如跑步

<?php
$in = 'P3TF';
$arr = unpack('N', $in);
printf("%08x\n", $arr[1]);
?>


给出
50335446
,这是十六进制格式的'p''3''T''F'的ASCII码(串联)

C++中的代码基本上是错误的。它不能保证<>代码>长< /Cub > 4字节。而且,C++中使用的方法在PHP中不起作用;PHP不允许你混淆字节、位和地址,就像C++一样。字符串更抽象,PHP中可以是多字节的。C++代码实际上不是我的,它确实有效,我只是在尝试。将字符串转换为PHP。至于多字节的字符串,有什么办法可以绕过这个问题?因为这将被写入到文件中的一个文件:“代码> WB模式。@ HOHSADSIQ:尝试在64位Linux机器上运行C++代码,然后回来告诉我们它确实有效。”我在64位Windows机器上运行它。它真的会有区别吗?(它目前在Windows 7 64位上运行,带有Dev-C++和MinGW上的gcc)?谢谢!在阅读了您的评论之后,我记得最终的文件在开始时应该有P3TF(这就是我试图实现的)但是,我觉得有点奇怪,因为C++代码输出了<代码> 1179923280代码/>。有什么想法吗?字符串“p3tf”是0x50,0x33,0x54,0x46。如果你把这些字节当作一个无符号长,那么它将变成0x4654、1179923280,这是1179923280。太棒了!非常感谢!
<?php
$in = 'P3TF';
$arr = unpack('N', $in);
printf("%08x\n", $arr[1]);
?>