gpt4 book ai didi

PHP打包二进制数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:34 24 4
gpt4 key购买 nike

这是关于通过套接字发送到驻留在远程 POS 系统上的 C 应用程序的数据。

二进制数据是从 php 应用程序发送的,在 C 应用程序数据包结构中,有 64 个字节存储一个字符串,例如产品名称。

现在当我通过 php 套接字通过网络发送产品名称时,我使用 pack 将数据转换为二进制

$value = 'product name' 
$qty = 2;
$len = strlen($value);
$output = '';
for($i=0; $i<$len; $i++) {
$output .= pack('c', ord(substr($value, $i, 1))).pack('c',$qty)
}

当 C 应用程序接收到数据时,该字符串包含大量垃圾数据,包括数字和特殊字符。

我必须使用哪些打包选项将产品名称打包为 64 字节的二进制字符串,C 应用程序将以正确的格式对其进行解释。

最佳答案

构建 $output 的循环会生成类似 "p\x02r\x02o\x02d\x02u\x02c\x02t\x02\x02n\x02a\x02m\x02e\x02"的字符串

如果您的 C 程序需要类似 "product name\0\x02" 的内容,那么循环应该是:

$output = '';
for($i=0; $i<$len; $i++) {
$output .= pack('c', ord(substr($value, $i, 1)));
}
$output .= pack('c',0).pack('c',$qty);

关于PHP打包二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com