1、首页 资讯 空间 学生 论坛 博客 下载 读书 网摘 程序员 外包 商城 书店 网址 CTO 乐知教育 D9区 kingmax26 的专栏 登录 注册 博客首页 全站 空间 博客 好友 相册 留言 用户操作 留言 发消息 加为好友 kingmaxID: kingmax26 共 763 次访问,排名 2 万外 , 好友 0 人, 关注者 0 人。 kingmax 的文章 原创 5 篇 翻译 3 篇 转载 21 篇 评论 24 篇 订阅我的博客 kingmax26 的公告 文章分类 HART linux 转贴 存档 2010 年 03月 (2) 2010 年 02月 (8) 2010 年 01月
2、(5) 2009 年 09月 (2) 2009 年 08月 (3) 2009 年 06月 (1) 2008 年 10月 (5) 2008 年 09月 (3) 彻底搞定 0x0d和 0x0a 收藏 什么是 0x0d 和 0x0a,可能大部分人都知道是回车和换行字符,但那个是回车,那个是换行?估计很多人都一时说不清楚了 -也许你不相信,那就调查下周围的同事吧,估计会包含以下字眼 “大概。我记得。回车是 0x0d 吧 ”。这次我移植 arm-linux C的程序,至 VC+,发现了很多不同,尤其是这个回车换行浪费我一上午的时间,我决定借此机会彻底搞定他们,这两个令人讨厌的家伙。 先说下浪费我一上午的
3、那个东西 -教训是很重要的,希望大家不要重蹈我的覆辙 -, 在 arm-linux 下,写二进制文件,打开文件的时候 这样写就可以了 fp_wthdisk = fopen(file_pathname,“w“);,以 w 格式写就可以了。把这段程序移植到 vc+后,发现一旦我向文件写入 0x0a,前边就会自动加上 0x0d,我以为是我写入数组的问题,反复检查也没有找到毛病,后来同事问我: “你是不是二进制格式写入的文件? ”我说: “是呀, fwrite w格式,没有问题呀 ”,后来他说,你试试 “wb格式写入一下 ”,改为 wb 后,果真就好了,厉害!,我对他竖起了大拇指。 看到这里,上边促使
4、我 下决心搞清楚回车换行的原因说完了。我想可能有人会犯同样错误的。但如果你对以下几个问题,都知晓了,就不必浪费时间,继续看下去了。 1.在 Windows XP Visual C+下,按下回车键,系统获得的字符是 0x0d 还是 0x0a,还是 0x0d 和 0x0a? 2.回车( 0x0d)的作用是回到本行的行首位置,表示本行已经输入完毕,停留在最后一个位置,还是光标转移到下一行的起始位置? 1.的答案是仅获得字符 0x0d 2.答案是回车的作用只是移动光标至该行的起始位置 注意:回车和换行在不同环境下的 意义不同,正如 sleep( 1)和 Sleep( 1)【注意 S大写】这两个函数的不
5、同一样, sleep( 1)在 linux 下表示延时 1s,而 Sleep( 1)在 vc+下表示延时 1ms,如果不依据环境来讨论回车和换行,是无意义的,只能是让人们误入歧途和浪费时间。 我只在 arm-linux C 和 vc+下做了试验,请大家在接触其它语言环境下,小心推广,不行就自己动手做试验,最可靠。在 arm-linux C和 vc+下回车换行的意义如下。 回车 代码: CR ASCII 码: r ,十六进制, 0x0d,回车的作用只是移动光标至该行的起始位置; 换行 代码: LF ASCII码: n ,十六进制, 0x0a,换行至下一行行首起始位置; Linux 和 windo
6、ws 下,回车试验 CODE: sprintf(versionbuf,“%s“,“TEST_VERSION_1_0_11rabcdefgr34567n“); printf(“%s“,versionbuf); 均打印输出: 34567fgRSION_1_0_11,证明了以上结论。 其实回车和换行之所以把大家搞迷糊的一个重要原因,是大家把键盘的 “回车键 ”, 0x0d 表示 “回车 ”,我们在 windows 下的 txt 文件下敲下的回车键等情况搅在了一起。在键盘上敲下回车键,在不同软件下获得字符大有不同。 Windows 下在 txt 文件中敲下回车键,然后 16 进制观察,你会发现获得了
7、2 个字符, 0x0d 和 0x0a,这个大家都知道,但这不意味着,在任何情况下敲下回车键,都会获得 0x0d 和 0x0a。 在 linux 下,你对一个文件,敲下回车键,你就会发现,它每次只增加一个字符。 / rn 0x0d 0x0a 回车 换行 回车即光标移动到行首 换行即光标移动到下一行 发表于 2010 年 02月 02日 17:11:00 | 评论 ( 0 ) | 举报 | 收藏 旧一篇 : 彻底搞定 0x0d 和 0x0a | 新一篇 :转换二进制数据流成字符串显示 查看最新精华文章 请访问博客首页 相关文章 发表评论 表 情: 评论内容: 用 户 名: 登录 注册 匿名用户 验 证 码: 重新获得验证码 Copyright kingmax26 Powered by CSDN Blog 近期热点文章推荐