字节流读写的小demo
Posted 张三和李四的家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节流读写的小demo相关的知识,希望对你有一定的参考价值。
int main(void)
//写十六进制数据到stdout 中
uint16_t width = 700;
/ putc() return the character written as an unsigned char cast to an int
int ret = putc( width>> 0, stdout);
printf("\\t [%d] \\n",ret); //[188]
ret = putc(width >> 8, stdout);
printf("\\t [%d]",ret); //[2]
ret = putc('\\n', stdout);
printf("\\t [%d] \\n",ret); //[10]
ret = putc(width , stdout); //[188]
printf("\\t [%d] \\n",ret);
ret = putc('\\n', stdout);
printf("\\t [%d] -----------------------\\n",ret); //[10]
///写十六进制数据到文件中
fwrite((void*)&width, sizeof(uint16_t), 1, stdout);
putc('\\n', stdout);
FILE * file = fopen("test.dat", "wb+");
if(file == NULL)
printf("\\t [%d] -----------------------\\n",10);
return -1;
fputc(width >> 0, file); //写入了 bc, 因为 fputc 只能写入一个字节 ,此时写入的是低八位 bc
fputc(width >> 8, file); //写入了 2, 此时写入的是高八位
//恰好 uint16_t 占据了两个字节,如果是uint32_t 呢? 是不是要 width >> 0, width >> 8, width >> 16, width >> 24 是这样写入的吗?
// 如果读出uint16_t呢? 按照一个字节来读,首先读取到的是 bc ,然后读到的是 2
// 是这样吗?
uint32_t u32Val = 0xfefefefe;
printf("\\t [%x:%x:%x:%x]\\n ",
u32Val >> (8*0),
u32Val >> (8*1),
u32Val >> (8*2),
u32Val >> (8*3));
printf("%u, [%lu] \\n", u32Val, sizeof(uint32_t));
fputc('\\t', file);
fwrite((void*)&width, sizeof(uint16_t), 1, file);
fclose(file);
file = fopen("test.dat", "rb");
uint8_t u8Val = fgetc(file);
printf("u8Val:[%x]\\n", u8Val); //[bc]
u8Val = fgetc(file);
printf("u8Val:[%x]\\n", u8Val); //[2]
fclose(file);
return 0;
以上是关于字节流读写的小demo的主要内容,如果未能解决你的问题,请参考以下文章