美文网首页
iOS学习-计算机的编码

iOS学习-计算机的编码

作者: 快乐的tomato | 来源:发表于2021-08-24 14:07 被阅读0次

一、二进制

1、什么是二进制

以2为基数代表系统的二进位制。用两个不同的符号0(代表零)和1(代表一)来表示

2、计算机为什么采用二进制?

1、二进位计数制仅用两个数码,任何具有二个不同稳定状态的元件都可用来表示数的某一位,氖灯的"亮"和"熄";开关的”开“和”关“; 电压的”高“和”低“。
2、二进位计数制的四则运算规则十分简单
3、在电子计算机中采用二进制表示数可以节省设备

二、ASCII码

1、什么是ASCII码

既然电脑只能用0、1来显示,显然我们是看不懂的,怎么能让计算机传输出二进制数据显示出我们能看的字符呢?
所以早期美国就搞了一套电脑编码系统,就是ASCII码。共收录了 字符包括数字、字母、还有一些符号等128个,用一个字节(8位)就可以来表示存储。


image.png

ASCII码对照表完整版
比如用我们想别人打个招呼,Hi,在电脑传输的就是01001000 01101001,经过电脑的各种转换,就可显示出Hi。

当欧洲其他的国家,比如法国、德国也用电脑的时候,这些字符就不够用了,就对ASCII码进行了扩展,但是当电脑传到我国的时候,这些字符也没法显示汉字,就根据我们国家的情况制定了国标GB2312、GBK标准,这些标准增加了汉字等字符。

二、Unicode

1、什么是Unicode

如果每个国家都搞一套标准,那岂不是很乱,所以某一个组织就搞了一个同一的标准,就是Unicode。包含了字符集和编码规则。

三、UTF-8

1、什么是UTF-8

Unicode是UTF-8发展来的,当然这其中经历了很复杂的发展历程,这也是目前世界用的最多的。

2、在iOS中的应用
 NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

将网络请求返回的二进制数据NSData进行NSUTF8StringEncoding编码,转换成我们可以看的懂得文字。

四、base64编码

1、什么是base64编码

Base64编码是从二进制值到某些特定字符的编码,这些特定字符一共64个,所以称作Base64。

2、为什么要用base64编码

是为了准确的传输数据
浏览器里面的图片、视频、音频都是二进制数据),问题是传输的时候必须保证字节不会改变。你直接将图片的字节转化为一个字符串一般是不行的,除非使用的字符集在0~255之间全部有对应的字符,否则就会导致某些字节转换错误,那么客户端所收到的就不再是原来的那些字节了。
base64之所以可以,是因为编码之后的字符都落在ASCII区间,而ASCII是所有字符编码都会支持的,因此可以正确传输和还原。

3、base64编码原理

比如对ABC进行base64编码:

1、首先取ABC对应的ASCII码值
A : 65、B : 66、C : 67
2、再取二进制值
A : 01000001、B : 01000010、C : 01000011
3、然后把这三个字节的二进制码接起来
010000010100001001000011
再以6位为单位分成4个数据块
010000 010100 001001 000011
并在最高位填充两个0后形成4个字节的编码后的值
00010000 00010100 00001001 00000011
4、再把这4个字节数据转化成10进制数
16、20、19、3
5、最后根据Base64给出的64个基本字符表,查出对应的ASCII码字符
Q、U、J、D

所以ABC进行base64编码后的值是QUJD。
站长工具
用工具测试结果:

image.png
  • 解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。
4、在iOS的实现
#pragma mark - 1、base64编码
-(void)base64Test{
    
    NSString *str = @"我是中国人";
    NSLog(@"原字符=%@",str);
    NSLog(@"base64编码=%@",[self base64BianMa:str]);
    NSLog(@"base64解码=%@",[self base64JieMa:[self base64BianMa:str]]);
}

-(NSString *)base64BianMa:(NSString *)str{
    
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    NSString *base64Str = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return  base64Str;
}

-(NSString *)base64JieMa:(NSString *)str{
    
  NSData *data = [[NSData alloc]initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];
  NSString *jiemaStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
   return  jiemaStr;
}

参考:
百度百科:二进制
非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有
Base64编码

相关文章

  • iOS学习-计算机的编码

    一、二进制 1、什么是二进制 以2为基数代表系统的二进位制。用两个不同的符号0(代表零)和1(代表一)来表示 2、...

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • iOS直播技术分享-视频编码(三)

    iOS硬编码 直接上代码来说明,首先是定义了编码所需的变量 初始化编码session 编码输入 回调 iOS软编码...

  • Python2与Python3的编码问题

    一. 什么是编码 将明文转换为计算机可以识别的的编码文本称为“编码”, 反之从计算机可识别的编码文本转回明文为“解...

  • 【每天来点python】字符串与编码

    学习地址:字符串与编码 编码讲的非常好,引用一下: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或...

  • iOS开发 | 规范编码的四个意识

    iOS开发 | 规范编码的四个意识 iOS开发 | 规范编码的四个意识

  • iOS URL编码

    参考 全面深度解析iOS端URL编码和解码过程 iOS中URL编码那些事

  • iOS-视屏编码

    编码方式 在iOS中编码方式有两种硬编码: 在iOS8.0之后,使用原生框架VideoToolBox&AudioT...

  • iOS URL编码 AFNetworking

    iOS URL编码

  • 38 转换流

    字符编码和字符集 学习转换流之前,先学习下字符编码集 我们知道计算机文件是01存储,但是图片文档打开效果各不一样,...

网友评论

      本文标题:iOS学习-计算机的编码

      本文链接:https://www.haomeiwen.com/subject/cacdiltx.html