【发布时间】:2020-01-30 09:15:17
【问题描述】:
在课堂上,我们正在学习如何创建 ppm6 文件。
我们有一个uint8_t 的二维数组,该类要求我们使用fwrite() 以某种方式将此二维数组转换为如下所示的一堆二进制字符:
ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿ\0\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿÿ\0ÿ
如何做到这一点?
班上有人说它会自动进行转换,这对我来说根本没有意义。这就是我目前正在返回的内容。 color_array 是一个由uint8_t 组成的二维数组,每个color_array[i] 为三个uint8_ts 提供一个数组。
fwrite(color_array[i], sizeof(uint8_t), 3, output);
我的输出是:
???????????????????
【问题讨论】:
-
如何读取输出?用哪个程序?查看那里的真实数据的十六进制代码会很有用。
-
二进制数据的呈现通常取决于生成输出的软件。如果您使用十六进制文件查看器/编辑器,它将显示为十六进制值。如果您使用标准编辑器(想想“Notepad++”),它将以您选择的编码进行解释;只是一些例子:ANSI、UTF-8。如果您使用 shell 或命令解释器,它也将在编码中进行解释。您向我们展示的示例输出来自哪里?
-
以文本形式查看的二进制数据在大多数情况下看起来都是垃圾。如果您想查看它实际包含的内容,请使用十六进制转储工具。
标签: c binary-data ppm