admin 管理员组

文章数量: 887021


2024年1月26日发(作者:电脑下载编程软件)

Base64编码及其在AppInventor中的应用

作者:王德贵 丁大为

来源:《电脑报》2021年第04期

在学习、生活和工作中,人和人之间离不开各种交流和沟通。除了面对面通过语言、表情和动作等方式交流以外,还可以进行网上交流,这就需要相互间传送一些文字、图片、声音或是视频等信息,那么这些信息是怎么传送的呢?图片和视频的审核,是怎么知道其中有违法内容的呢?在AppInventor安卓应用开发时,音乐、图片和视频为什么不能直接传输呢?那现在我们就来探讨一下,Base64编码在信息传输过程中的重要应用。

在生活中,我们经常会遇到这样的情况,比如去银行办事,到那之后,会拿到一个号码,然后就是等待工作人员叫到这个号码,你才去办理业务。银行并不知道你是谁,也无须知道是谁,用这个号码对应每个办理业务的人就可以了。其实,这就是编码。

字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,我们常见的字符集有ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确地处理各种字符集文字,必须进行字符编码,计算机才能识别和存储各种文字,但要是把字符发送给对方,对方却只能识别ASCII码,其他字符集还需要再次进行编码,这就是Base64编码诞生的原因。

Base64是网络上最常见、也是最基本的用于传输8bit字节代码的二进制编码方式,用来将非ASCII字符的数据转换成ASCII字符的一种方法。它用64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据0-63,码表如图。

编码规则:①把3个字节变成4个字节。②每76个字符加一个换行符。③最后的结束符也要处理。

原文的字节数量如果是3的倍数,Base64编码要求把每三个8bit的字节转换为四个6bit的字节(3×8 = 4×6 = 24),然后把6bit两位高位添0,组成四个8bit的字节,也就是说,转换后的字符串将要比原来的长1/3。

原文的字节数量如果不是3的倍数,那就将原文剩余的字节根据编码规则继续单独转(1变2,2变3;不够的位数用0补全),再用“=”号补满4个字节。这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。我们根据规则将以下几个字符转换成Base64编码。

根据这几个例子,我们已经看到了Base64就是用6位(2的6次幂就是64)表示字符,因此称为Base64。同理,Base32就是用5位,Base16就是用4位,大家将来在编程中遇到时就不会觉得陌生了(例1、例2、例3)。

傳输图片的过程中为什么要编解码?计算机上存储的信息都有首尾定界符,如果在传输时只是简单地将图片以二进制读出再传输,如果接收信息位中出现不可见的特殊字符(如控制字符)就会造成接收方误判,而使信息接收不完整(错误)。为了保证数据被完整地传给对方,需要先对其进行编码,等接收方完整收到后,再对其进行解码。

同样声音和视频等信息的编码传输,也是一样的道理。

根据前面的分析和讲解,我们对Base64编码有了初步的理解,其实处理任何发送或接收的信息,都要用到Base64编码,只是有些应用里内置了转换过程,但我们要从头开发应用程序时,就需要做底层的信息转换处理。下面我们看看文本、照片、声音的Base64编码在AppInventor安卓应用开发中的具体运用。由于视频的Base64编码太长,这里不做说明。

扫码下载源代码并在AppInventor中导入。先看看页面及组件设计,程序在后面具体应用中说明(图1)。

当点击“文本”按钮时,隐藏“图像选择框”,取消“文本输入布局”隐藏;当点击“拍照”按钮,隐藏“文本输入布局”。其他按常规设置即可。

(1)文本编码

文本编码就是让AppInventor按Base64编码规则将源文件转码。

先创建变量,保存需要转换文件的路径(图2)。

当点击“文本”按钮时,“图像选择框”隐藏,“文本输入布局”显示,输入文本后,点击“提交”确认,点击“查看”按钮即可看到对应的Base64编码(图3)。

文本输入中文“电脑报”,点击按钮“提交”和“查看”,即可看到上述效果。大家可以验证前面所讲的3个例子,或是输入任何字符进行测试,都可看到对应的Base64编码。

从以上程序可以看到,在AppInventor应用中,文本编码作为基本测试,还是很好理解的,当然,也可以将Base64编码进行解码还原出原始字符,这里不再赘述。下一部分我们继续讲解图片编码、声音编码,以及AI智能审核原理解析。

(未完待续)


本文标签: 编码 字符 信息 文本