IO流之计算机存储规则
创始人
2025-06-01 08:29:39
0

引言:

字节流可以读写所有文件,字符流只可以读写纯文本文件

1、计算机的存储规则

 八个比特为组成一个字节,字节是计算机中最小的存储单位

1.1、字符集

每一个二进制数字,对应码表中的一个英文字符,中文字符,符号等

ASCII:英文(0-127)

GBK:英文➕中文(GB国标 K拓展)

BIG5:台湾文字用

UniCode:英文➕中文(万国码)

1.2、存取规则 (英文)

 

 想要存储在计算机里,必须是八的倍数,所以对于不足8位的二进制数字,计算机会进行补码操作。

存储:在ASCII查询存储英文对应的十进制数字,将其转化做二进制数字,对其进行编码,再存储。

读取:对其进行解码,随后将二进制数字转化做十进制数,在ASCII码表中查询,再获得。

特点:英文一个字节存储,字符集都兼容ASCII码表,开头以0补码,转换成十进制一定是一个正数。

ASCII码表:

1.3、存取规则(中文)

 

 与英文类似,在GBK字符集,或者Unicode字符集进行查询,随后将其编码。

为了与英文区分,同时因为汉字数量很多,有以下特点:

1、汉字在字符集中对应的数字都是两个字节。

2、汉字的第一个字节(也称之为高位字节),一定是以1开头,转换成十进制后是一个负数。

3、汉字的第二个字节(也称之为低位字节),可以是1/0开头,转换过后可正可负。

 

1.4、Unicode解码方式

UTF-16:2-4个字节(英文2个)

UTF-32:4个字节

UTF-8 :1-4个字节(英文1个,中文三个)

补码:

英文:开头0

中文:1110 10 10

 小tips

UTF-8是一个字符集吗?

答:不是,UTF-8是Unicode字符集的一种编码方式

一种字符集只能对应一种编码方式吗?

答:不是,Unicode有多种编码方式

1.5、乱码现象

为什么会有乱码?

原因1:

字节流读取文件时,按照一个字节一个字节的读取,在UTF-8编码方式中,中文为3个字节,读取时拆分来读,会出现乱码现象。

 字节流读取按照一个字节一个字节的读取,在ASCII码表中查询,一个字节查询完毕打印一个字节,因此中文会乱码。

原因2:

编码时和解码时采取的方式不统一。

注:GBK编码方式中文占据两个字节 

 

 

1.6拓展:为什么字节流拷贝不会出现乱码呢?

         用字节流读取时,按照一个字节一个字节的读取,在ASCII码表中查询,一个字节查询完毕打印一个字节,因此中文会乱码。

         一个字节一个字节的拷贝,数据没有丢失

          用文件打开时,如果打开时编码表、编码方式和数据源一致,不会出现乱码。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...