【发布时间】:2021-08-09 09:27:30
【问题描述】:
我正在将PHP 脚本中的小Objective C 代码转换为将整数数组转换为二进制文件。
目标 C 代码
typedef struct {
uint8_t fj1;
uint8_t fj2;
uint8_t sr1;
uint8_t sr2;
uint8_t zh1;
uint8_t zh2;
uint8_t as1;
uint8_t as2;
uint8_t mg1;
uint8_t mg2;
uint8_t is1;
uint8_t is2;
} struct_pt;
struct_pt g_p_t[366]= {
1, 29, 2, 49, 8, 15, 11, 16, 13, 37, 14, 52,
1, 29, 2, 49, 8, 16, 11, 17, 13, 37, 14, 53,
1, 29, 2, 50, 8, 16, 11, 18, 13, 38, 14, 53,
…………..
}
const char *filePath = "/Users/usr/path/to/folder/filename.bin”;
FILE *file = fopen(filePath, "wb");
if (file != NULL) {
fwrite(g_p_t, sizeof(uint8_t), sizeof(g_p_t), file);
}
这是我的 PHP 代码
// array of 366 rows
$arr = [1, 29, 2, 49, 8, 15, 11, 16, 13, 37, 14, 52,
1, 29, 2, 49, 8, 16, 11, 17, 13, 37, 14, 53,
1, 29, 2, 50, 8, 16, 11, 18, 13, 38, 14, 53,
……..
];
header("Content-Disposition: attachment; filename=\”file.bin\"");
header("Pragma: no-cache");
header("Expires: 0");
for ($i=0; $i < count($arr); $i++) {
echo trim(pack("I", $arr[$i]));
}
fclose($out);
?>
PHP 生成的二进制文件与 Obj-C 生成的文件有点不同。我想我需要在 PHP 中进行字符编码。
你能指导我在PHP中uint8_t的等效编码是什么吗?
【问题讨论】:
-
您的示例代码是 C,而不是 Objective-C。而且您的结构与
struct { uint16_t fj; uint16_t sr; uint16_t zh; uint16_t as; uint16_t mg; uint16_t is; } yourstructnametype;几乎相同,这意味着您的array[366]应该是= {{...},{...},{...}};,因为您设置了每个fj1,然后跳过11 个字符。 -
struct_pt g_p_t[366]与uint8_t g_p_t[366]不同。 -
@OlSen,是的,我正在关注 struct_pt 类型的
{{...},{...},...{...}};结构。对不起,不好的做法。但我的问题真的很重要吗?
标签: php objective-c types binaryfiles