PHP 字符串到"unsigned long"(从 C++)
PHP string to "unsigned long" (from C++)
我在c++中有这段代码,它返回输出如下数字
int main(int argn, char** argv)
{
cout << (*((unsigned long*)"P3TF")) << endl;
cin.get();
return 0;
}
我如何在PHP中实现上述(即unsigned long int中的字符串"P3TF")。我尝试使用打包方法:
<?php
$lol = pack('N', 'P3TF');
var_dump( $lol, // returns jumbled up characters
ord($lol[0]), // returns int 0
ord($lol[1]), // returns int 0
ord($lol[2]), // returns int 0
ord($lol[3]), // returns int 0
ord($lol[0]).ord($lol[1]).ord($lol[2]).ord($lol[3]) // returns 4 zeros as a string.
);
?>
我需要双端字节顺序,所以我没有使用pack('V')
或pack('L')
。
有人知道怎么实现这个吗?
谢谢!
如果它在实际代码中字面上是"P3TF"
,为什么不转换它一次,并在PHP代码中定义一个常数?
否则,你需要unpack,而不是pack。如运行
<?php
$in = 'P3TF';
$arr = unpack('N', $in);
printf("%08xn", $arr[1]);
?>
给出50335446
,这是十六进制(连接)的' p ' '3' 'T' 'F'的ASCII码
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 定义 uint= "unsigned int" 没有像我在 Visual Studio 中使用 nvcc 时预期的那样应用
- static_cast<unsigned>(签名)与标准::bit_cast<unsigned>(签名)之间有区别吗?
- 对 '(const Y) (int&, std::mersenne_twister_engine<long unsigned int,
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 为什么在C++负数static_cast如果<unsigned>数字是常数,则不同
- 正确语法,用于统一初始化名称中带有空格的类型的临时,如unsigned int
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 让 'std::vector<unsigned char>' 从 'std::string' 中窃取内存
- C++11 模板函数"implicity"将位集<N>转换为"unsigned long"
- "runtime error: addition of unsigned offset to 0x129000a0 overflowed to 0x12900088"
- 按值对 std::unordered_map<std:::string, std::atomic<unsigned int>> 进行排序
- 无法从'unsigned short [9]'转换为'char []'
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用