c - 为什么数字字符的 ASCII 代码会写入文件?

标签 c binary ascii fwrite

我正在使用以下代码编写一个二进制文件

char x[] = "02 00 27 FF FF 92 20";
FILE *ptr_x;
ptr_x=fopen("xx","wb");
fwrite(x, 1, 1, ptr_x);

问题是,如果我打开文件,它会这样写:

"30 32 20 30 30 20 32 37 20 46 46 20 46 46 20 39 32 20 32 30"

这是上面文本的 ASCII 表示形式。 我想要的是一个文件,其中写入的值正是这些值,而不是 ASCI 表示形式。

问候,

解决方案:

uint8_t x[68] = {0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
                0x00,0x00,0x00,0x18,0xDA,0x18,0xF1,0x18,
                0xDA,0xF1,0x18,0xF1,0x18,0x00,0x05,0x02,
                0x01,0x14,0x00,0x01,0x00,0x0B,0x00,0x33,
                0x01,0x01,0x04,0x02,0x00,0x27,0xFF,0xFF,
                0x92,0x20,0x00,0x00,0x00,0x23,0xFE,0x00,
                0x04,0x02,0x00,0x27,0xFF,0xFF,0x04,0x02,
                0x00,0x23,0xFE,0x00,0x00,0x00,0x00,0x00,
                0x00,0x00,0x92,0x20};

FILE *ptr_x;
ptr_x=fopen("xx","wb");
fwrite(x, 68, 1, ptr_x);

最佳答案

尝试使用如下数组:unsigned char x[] = {0x02, 0x00, 0x27, 0xFF, 0xFF, 0x92, 0x20}; 或者,更好的是,使用 uint8_t 而不是 unsigned char

关于c - 为什么数字字符的 ASCII 代码会写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40281889/

相关文章:

python - 在 Python 中查找箭头键的值 : Why are they triples?

c - 为什么此代码会导致段错误?

c - 二维数组指针

php - 在php中输出原始二进制整数

c++ - GetModuleFileNameEx - 是否可以在 char* 而不是 TCHAR[] 中获取路径?

c - 将字母表保存在数组中会出现堆栈粉碎错误

c - C : assignment makes integer from pointer without a cast 中的警告

c - MPI_ERR_RANK : invalid rank with cluster

c - 数组的二进制插入排序不起作用(C 代码)

c - 如何将整数与分数相乘