- 论坛徽章:
- 0
|
我用这个函数把long型的数据输到二进制文件,
static void w_long(long x, FILE *fp)
{
putc( (char)( x & 0xff ), fp );
putc( (char)( (x>> & 0xff ), fp );
putc( (char)( (x>>16) & 0xff ), fp );
putc( (char)( (x>>24) & 0xff ), fp );
}
但输出10的时候竟然输出了5个字节。其它的都是输出4个字节。这是为什么?
w_long(10,fp)输出10的结果: 0D 0A 00 00 00
w_long(11,fp)输出11的结果: 0B 00 00 00
#include<stdio.h>
static void w_long(long x, FILE *fp)
{
putc( (char)( x & 0xff ), fp );
putc( (char)( (x>> & 0xff ), fp );
putc( (char)( (x>>16) & 0xff ), fp );
putc( (char)( (x>>24) & 0xff ), fp );
}
int main()
{
long x = 10;
FILE *fp = fopen("bits", "w" ;
w_long(x,fp);
/*while( x<30 )
{
w_long(x,fp);
x++;
} */
fclose( fp );
return 0;
} |
|