免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2314 | 回复: 3
打印 上一主题 下一主题

[C] 二进制输出10为什么会得到5个字节 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-20 16:49 |只看该作者 |倒序浏览
我用这个函数把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;
}

论坛徽章:
0
2 [报告]
发表于 2008-12-20 17:20 |只看该作者
把代码贴好先

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2008-12-20 18:19 |只看该作者
w => wb

论坛徽章:
0
4 [报告]
发表于 2008-12-20 19:23 |只看该作者
应该是平台问题,楼主的肯定是win系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP