js base64

xiaoxiao2021-02-28  138

Base64 JavaScript版本 UTF-8 为基准 以下简要说面实现,不说明理论。

将字符串转二进制 首先,我们要将待转换的源串转成二进制。

var unicode = string.charCodeAt(index);

那么首先通过字符串的##charCodeAt函数获取字符测unicode值

var binary = unicode.toString(2)

然后,通过Number.toString(2) 将unicode值转换成二进制。

因为不同的字符所占字节是不一样的,比如26个字母,它们不管大小写都是占据一个字节。 又比如汉字在UTF-8中占据着三个字节。如下不同的unicode值对应占据字节的个数, 以及转换二进制关系

| Unicode符号范围 | UTF-8编码方式 n | (十六进制) | (二进制) —+———————–+—————————————————— 0000 0000 - 0000 007F | 0xxxxxxx 0000 0080 - 0000 07FF | 110xxxxx 10xxxxxx 0000 0800 - 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000 - 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0020 0000 - 03FF FFFF | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0400 0000 - 7FFF FFFF | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

二进制的补齐以及转换unicode对应的二进制格式 2.1 通过unicode 或者 binary 的值参照上表,不足位数的在前面补0,并且添加前缀。 2.2 循环取出源串中的字符进行转换并拼接在一块,最后得到源串对应的二进制串。 2.3 然后循环,间隔6位为一个单位取出二进制串,这样就得到了一个base64字符串的索引对应的二进制indexBinary, 2.4 接着,将二进制转换成10进制

var index = parseInt(indexBinary, 2);

对应索引拼接Base64字串

我们知道Base64字串是由A-Z、a-z、0-9、+、/组成

var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64Char = code.charAt(index);

这样我们就得到了对应的base64字符。

由于一个字节是8位,而我们取出的规则是按照6位取的,这样就有可能出现最后一次取值得时候 不足6位,如下:

1.0: M 01001101 一个字节会多出01 那么我们在它后面补0 01001101 0000 010011 01 010011 010000 2.0: M M 01001101 01001101 01001101 01001101 00 010011 010100 1101 010011 010100 110100

因为Base64字符的最小单位是四个字符一组,所以上1.0中需要补充两个=,2.0需要补充一个=,即: 010011 010000 T Q = = 2.0的以此类推

最后拼接得到Base64字串. 以下提供参考: http://download.csdn.net/detail/u013791665/9862535 http://download.csdn.net/detail/u013791665/9862367

转载请注明原文地址: https://www.6miu.com/read-26920.html

最新回复(0)