问题描述
我想读取二进制文件的文件头,现在只打印一些值。代码是大端的。我的电脑小端。结构有单词和字符串。 我设法从文件中读取,但输出错误。
样本字节为 02 00 00 0c 00 fa。
输出是“标题长度= 2(什么是0002而不是0200),高度dec=(fa00的十进制值,而不是00fa)
我还想要对值本身进行转换,而不仅仅是更正的输出打印。
我在这里搜索了很多小时并尝试了很多代码,但都没有奏效,而且大多数代码都有几行。
之后,我通过读取 2 个字节(以多种方式)来尝试它,例如“BYTE (hlen[1]) 和 [2],hlenlow。
printf(" Pixel dec %u\n",(uint16_t)(buffer[6] << 8) | buffer[7]);
但现在我想将字节转换为具有正确字节顺序的单词。与他们合作时,我迟早必须转换它们。
还有如何打印带有“00”和02的前导0的字节?我总是有问题。 字符串可能是另一个问题(如何检查里面的长度)。 后来根据标题长度有可变的调色板。 我检查了许多其他代码,但没有一个是相似的或极难理解的(就像许多 inc 文件一样)。最好和最简单的方法是什么?最好转换所有字节(3 个字符串除外)
typedef unsigned short WORD;
struct header{
WORD (hlen);
WORD (datatype);
WORD (height);
char date [8];
..
}
// file io with fp
struct header input;
fread(&input,sizeof(struct header),1,fp);
printf("Header length =%X%X\n",input.hlen);
..
printf("height dec=%u%u\n",input.height);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)