写错了答​​案

时间:2016-06-10 01:12:20

标签: c++ c fwrite short

在我的项目中,我写了一个a.bin文件,其中包含无符号短(16位LE值)形式的传感器数据。但我错了价值。你们能告诉我这里出了什么问题吗?

#include<stdio.h>
int main()
{
    FILE *fp = fopen("a.bin","ab");
    unsigned short us;
    us=123;
    fwrite(&us,2,1,fp);
    printf("%04X",us); // 0x:007B
    us=1234;
    fwrite(&us,2,1,fp);
    printf("%04X",us); // 0x04D2
    us=-3145;
    fwrite(&us,2,1,fp);
    printf("%04X",us); // 0xF3B7
    fclose(fp);
}

在我执行fwrite()

之后
a.bin
7b 00 d0 bc 04 d0 b8 d0 b7

但我想要

a.bin
7b 00 04 d2 f3 b7

1 个答案:

答案 0 :(得分:2)

修正错误后,代码对我很有用。

请注意,以模式https://github.com/google/google-visualization-python/zipball/master 打开文件意味着&#34;追加&#34;。我将其更改为"a",这将覆盖现有文件:

<强> "w"

fwrite.c

结果:

#include<stdio.h>
int main(void)
{
    FILE *fp = fopen("a.bin","wb");
    unsigned short us;

    us = 123;
    fwrite(&us, sizeof(us), 1, fp);
    printf("%04hX\n",us); // 007B

    us = 1234;
    fwrite(&us, sizeof(us), 1, fp);
    printf("%04hX\n",us); // 04D2

    us = -3145;
    fwrite(&us, sizeof(us), 1, fp);
    printf("%04hX\n",us); // F3B7

    return 0;
}