有没有一种好方法可以将二进制数据的文字写入文件?

Is there a good way of writing a literal of binary data to write into a file?

提问人:vijay shankar 提问时间:11/13/2023 最后编辑:mkrieger1vijay shankar 更新时间:11/13/2023 访问量:76

问:

我有一个 PDF 文件的字节,我把它们放在我的 C 文件中。

然后,代码创建一个 sample.pdf 文件,并使用 wb 打开它,以将这些字节写入 sample.pdf 文件。

它创建文件,但打开时显示文件已损坏数据。

下面我附上了我的整个源代码:

#include <stdio.h>

int main(){

    char docDat[] = "0x25,0x50,0x44,0x46,0x2D,0x31,0x2E,0x36,0x0A,0x25,0xC3,0xA4,0xC3,0xBC,0xC3,0xB6,0xC3,0x9F,0x0A,0x32,0x20,0x30,0x20,0x6F,0x62,0x6A,0x0A,0x3C,0x3C,0x2F,0x4C,0x65,0x6E,0x67,0x74,0x68,0x20,0x33,0x20,0x30,0x20,0x52,0x2F,0x46,0x69,0x6C,0x74,0x65,0x72,0x2F,0x46,0x6C,0x61,0x74,0x65,0x44,0x65 ..... Bytes of pdf";

    FILE *fp;
    fp = fopen("sample.pdf", "wb");
    
    fprintf(fp, docDat);
    fclose(fp);


    return 0;
}

我希望当程序执行时,它会创建一个名为 sample.pdf 的文件并将字节写入其中。

C 文件-IO

评论

0赞 mkrieger1 11/13/2023
您的数据是字节的十六进制表示形式的字符串,而不是直接的字节。创建一个字节数组而不是字符串。

答:

1赞 Joop Eggen 11/13/2023 #1
byte docDat[] = { 0x25, 0x50, ...  };
...
size_t actually_written = fwrite(docDat, 1, sizeof(docDat), fd);

查看 https://en.cppreference.com/w/c/io/fwrite

而不是经常使用。前 4 个字节拼写为“%PDF”。byteunsigned char