在良葛格学习笔记输入输出一章中,本人感觉有些地方说的不是很清楚,现补充如下,望指正!

14.2.9 PushbackInputStream
java.io.PushbackInputStream 拥有一个 PushBack 缓冲区, 从 PushbackInputStream 读出数据后,只要 PushBack 缓冲区没有满,就可以使用 unread() 将数据推回流的前端。
举个使用 PushbackInputStream 的例子。假设一个文本文件中同时存储有 ASCII 码范围的英文字符与 BIG5 码范围的中文字符。您希望判断出哪些位置是 ASCII 而哪些位置是 BIG5 中文字符的位置, BIG5 中文字符使用两个字节来表示一个中文字,而ASCII 只使用一个字节来表示英文字符。
BIG5 中文为了与 ASCII 兼容,低字节范围为 0xA4~0xF9,而高字节为 0x40~0x7E 以及 0xA1~0xFE。存储时低字节先存,再存高字节,所以读取时只要先读到字节是在 0xA4~0xF9,就表示它可能是一个中文字的前半数据。为了说明 PushbackInputStream 的功能,在范例14.15 中一次从文件中读取两个字节,并检查两个字节合并后的整数值是否在 0xA440 与 0xFFFF 之间,这样可以简单地判断其两个字节合并后是否为 BIG5 码。如果是 BIG5 码则使用这两个字节产生 String 实例以显示汉字字符;如果不在这个范围之内,则可能是个 ASCII 范围内的字符,您可以显示第一个字节的字符表示,并将读出的第二个字节推回流,以待下一次可以重新读取。

[b]补充:
BIG5码的编码方案:每个汉字由两个字节构成,第一字节(低字节)的范围 0X81-0XFE,共126种。第二个字节(高字节)的范围分别为 0X40-0X7E, 0XA1-0XFE,共157种。利用这两个字节共可定义出 126 * 157=19782种汉字。存储按照低字节先存入。所以编码范围是0x8140-0xFE7E, 0x81A1-0xFEFE。
其中 0xA140-0xA17E, 0xA1A1-0xA1FE 是图形符号区;0xA440-0xF97E, 0xA4A1-0xF9FE 是汉字区。
常用汉字如一、丁,BIG5码的范围为 0XA440-0XC671,共5401个;较不常用的字,如滥、调,即次常用字,范围为 0XC940-0XF9FE,共7652个。 [/b]

tmp = (short)((array[0] << 8 ) | (array[1] & 0xff));
假如是汉字“这”,那么输出ffffd5e2
tmp = tmp & 0xFFFF;
输出d5e2

良葛格学习笔记输入输入一章中的PushbackInputStream的补充相关推荐

  1. java学习笔记-良葛格_Java良葛格 学习笔记《二》

    正则表达式 . 符合任一字符 \d 符合0到9任一个数字字符 \D 符合0-9以外的字符 \s 符合'\t'.'\n'.'\x0B'.'\f'.'\r'等空格符 \w 符合a到z.A到Z.0到9等字符 ...

  2. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  3. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

  4. 机器学习理论《统计学习方法》学习笔记:第六章 逻辑斯谛回归与最大熵模型

    机器学习理论<统计学习方法>学习笔记:第六章 逻辑斯谛回归与最大熵模型 6 逻辑斯谛回归与最大熵模型 6.1 逻辑斯谛回归模型 6.1.1 逻辑斯谛分布 6.1.2 二项逻辑斯蒂回归模型 ...

  5. 机器学习理论《统计学习方法》学习笔记:第五章 决策树

    机器学习理论<统计学习方法>学习笔记:第五章 决策树 决策树 5.1 决策树模型与学习 5.1.1 决策树模型 5.1.2 决策树与if-then规则 5.1.3 决策树与条件概率分布 5 ...

  6. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法

    机器学习理论<统计学习方法>学习笔记:第四章 朴素贝叶斯法 4 朴素贝叶斯法 4.1 朴素贝叶斯法的学习与分类 4.1.1 基本方法 4.1.2 后验概率最大化的含义 4.2 朴素贝叶斯法 ...

  7. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

  8. JavaScript学习笔记06【高级——JavaScript中的事件】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  9. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  10. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

最新文章

  1. python中的数据类型有哪些是可阅读,Python中典型的数据类型中哪个只能阅读不能修改...
  2. 批量put和单条put
  3. ZZULIOJ ASCII码排序(多实例测试)
  4. sed for windows 双引号内部内容的替换
  5. SQL Server游标
  6. 3.3.4.5. 日期计算
  7. python人民币转大写_python将人民币转换大写的脚本代码
  8. 数据结构的基本概念(ADT 抽象数据类型 数据结构三要素)
  9. 贝塞尔插值曲线绘制软件设计
  10. 算法入门模拟-剪刀石头布
  11. 目前国内几大著名报表软件
  12. 院士给自己博士生写的一封信:博士生每天工作12小时只是一个下限
  13. 理解梅尔频谱(mel spectrogram)
  14. 必备软件——下载工具
  15. VB编程:去除文本框首尾空行-51_彭世瑜_新浪博客
  16. 考研复试 计算机英语
  17. MAL-Gold Nanoparticle/Au nanoparticles纳米金颗粒/金纳米粒子|50nm浓度:0.5mg/ml
  18. 天干地支纪年法中为什么是60年一个轮回,而不是120年
  19. 如何c语言看字节大小,C语言字节大小day5
  20. 北京理工大学研究生计算机专业好考吗,北京理工大学计算机专业研究生的方向问题...

热门文章

  1. ESP8266调用心知天气API
  2. 聚类有效性指标(CVI)
  3. ANU COMP1100 Lab1简介
  4. 诚之和:谁在抢救瑞幸咖啡?
  5. Power BI分解销售目标
  6. MySQL INTERVAL 关键字指南
  7. 2021-2027全球与中国电动汽车PTC加热器市场现状及未来发展趋势
  8. 中考考试的指令广播_中考考试指令系统使用的说明.doc
  9. Python+KinectV2——PyKinect
  10. 书中自有黄金屋系列5:读《正面管教》