Objective C uint8_t PHP 等效
Objective C uint8_t PHP equivalent
我正在转换 PHP
脚本中的小 Objective C
代码,以将整数数组转换为二进制文件。
Objective 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
的等效编码是什么吗?
找到解决方案。
PHP pack()
通过带格式参数将数据打包成二进制字符串
因为我在 pack()
中使用 "I" -> unsigned integer
给出了 32 位编码的结果。然后trim()
去掉多余的空格,得到的数据变成8bit以下的编码。
我尝试使用 PHP
中的 chr()
从数字生成单字节字符串
echo chr($arr[$i]);
它对我有用 :)。
我正在转换 PHP
脚本中的小 Objective C
代码,以将整数数组转换为二进制文件。
Objective 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
的等效编码是什么吗?
找到解决方案。
PHP pack()
通过带格式参数将数据打包成二进制字符串
因为我在 pack()
中使用 "I" -> unsigned integer
给出了 32 位编码的结果。然后trim()
去掉多余的空格,得到的数据变成8bit以下的编码。
我尝试使用 PHP
中的chr()
从数字生成单字节字符串
echo chr($arr[$i]);
它对我有用 :)。