HarmonyOS NEXT鸿蒙开发 ArkTS:Base64Helper Base64编码转码 作者:马育民 • 2025-12-12 12:59 • 阅读:10003 # 介绍 [官方介绍](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-util#constructor9-5 "官方介绍") `Base64Helper` 类提供Base64编解码和Base64URL编解码功能。 Base64编码表包含 `A-Z、a-z、0-9` 这62个字符,以及 `+` 和 `/` 这两个特殊字符。在编码时,将原始数据 **按3个字节** 一组进行划分,得到若干个6位的数字,然后使用Base64编码表中对应的字符来表示这些数字。如果最后剩余1或2个字节,则需要使用"="字符进行补齐。 Base64URL编码表包含 `A-Z、a-z、0-9` 以及 `-` 和 `_` 64个字符,Base64URL编码结果不含 `=`。 # 导包 使用前需要导包 ``` import { util } from '@kit.ArkTS'; ``` # 构造方法 ``` constructor() ``` ### 例子 ``` let base64 = new util.Base64Helper(); ``` # 编码为 Uint8Array 对象 通过输入参数编码后输出 `Uint8Array` 对象 ``` encodeSync(src: Uint8Array, options?: Type): Uint8Array ``` **参数:** - src:`Uint8Array` 类型,必填,待编码的Uint8Array对象。 - options:`Type` 类型,表示对应的编码格式。此参数可选,可选值为: - `util.Type.BASIC`:表示Base64编码,默认值 - `util.Type.BASIC_URL_SAFE`:表示Base64URL编码。 **返回值:** `Uint8Array` 类型,返回编码后的Uint8Array对象 ### 例子 ``` let base64Helper = new util.Base64Helper(); let array = new Uint8Array([115,49,51]); let result = base64Helper.encodeSync(array); console.info("result = " + result); // 输出结果:result = 99,122,69,122 ``` # 编码为字符串 将输入的Uint8Array字节数组进行Base64编码,返回一个字符串结果。该方法支持多种编码格式,包括标准Base64编码、MIME格式的Base64编码(带有换行符)、URL安全格式的Base64编码等。 ``` encodeToStringSync(src: Uint8Array, options?: Type): string ``` **参数:** - src:`Uint8Array` 类型,必填待编码Uint8Array对象。 - options:`Type` 类型,此参数可选,可选值为 - 当参数取值为 `util.Type.BASIC`,表示Base64编码,返回值没有回车符、换行符。**默认值** - 当参数取值为 `util.Type.MIME` ,表示使用Base64编码。如果返回值超过76个字符,则会在每76个字符处进行换行,并以 `\r\n` 结束每行。如果返回值少于76个字符,则会抛出异常。 - 当参数取值为 `util.Type.BASIC_URL_SAFE` ,表示Base64URL编码,返回值没有回车符、换行符。 - 当参数取值为 `util.Type.MIME_URL_SAFE` ,表示Base64URL编码,返回值每一行不超过76个字符,而且每行以 `\r\n` 符结束。 **返回值:**`string` 类型,返回编码后的字符串。 ### 例子 ``` // MIME编码 let base64Helper = new util.Base64Helper(); let array = new Uint8Array([77, 97, 110, 105, 115, 100, 105, 115, 116, 105, 110, 103, 117, 105, 115, 104, 101, 100, 110, 111, 116, 111, 110, 108, 121, 98, 121, 104, 105, 115, 114, 101, 97, 115, 111, 110, 98, 117, 116, 98, 121, 116, 104, 105, 115, 115, 105, 110, 103, 117, 108, 97, 114, 112, 97, 115, 115, 105, 111, 110, 102, 114, 111, 109, 111, 116, 104, 101, 114, 97, 110, 105, 109, 97, 108, 115, 119, 104, 105, 99, 104, 105, 115, 97, 108, 117, 115, 116, 111, 102, 116, 104, 101, 109, 105, 110, 100, 101, 120, 99, 101, 101, 100, 115, 116, 104, 101, 115, 104, 111, 114, 116, 118, 101, 104, 101, 109, 101, 110, 99, 101, 111, 102, 97, 110, 121, 99, 97, 114, 110, 97, 108, 112, 108, 101, 97, 115, 117, 114, 101]); let result = base64Helper.encodeToStringSync(array, util.Type.MIME); console.info("result = " + result); /* 输出结果:result = TWFuaXNkaXN0aW5ndWlzaGVkbm90b25seWJ5aGlzcmVhc29uYnV0Ynl0aGlzc2luZ3VsYXJwYXNz aW9uZnJvbW90aGVyYW5pbWFsc3doaWNoaXNhbHVzdG9mdGhlbWluZGV4Y2VlZHN0aGVzaG9ydHZl aGVtZW5jZW9mYW55Y2FybmFscGxlYXN1cmU= */ // BASIC编码 let base64Helper = new util.Base64Helper(); let array = new Uint8Array([77, 97, 110, 105, 115, 100, 105, 115, 116, 105, 110, 103, 117, 105, 115, 104, 101, 100, 110, 111, 116, 111, 110, 108, 121, 98, 121, 104, 105, 115, 114, 101, 97, 115, 111, 110, 98, 117, 116, 98, 121, 116, 104, 105, 115, 115, 105, 110, 103, 117, 108, 97, 114, 112, 97, 115, 115, 105, 111, 110, 102, 114, 111, 109, 111, 116, 104, 101, 114, 97, 110, 105, 109, 97, 108, 115, 119, 104, 105, 99, 104, 105, 115, 97, 108, 117, 115, 116, 111, 102, 116, 104, 101, 109, 105, 110, 100, 101, 120, 99, 101, 101, 100, 115, 116, 104, 101, 115, 104, 111, 114, 116, 118, 101, 104, 101, 109, 101, 110, 99, 101, 111, 102, 97, 110, 121, 99, 97, 114, 110, 97, 108, 112, 108, 101, 97, 115, 117, 114, 101]); let result = base64Helper.encodeToStringSync(array, util.Type.BASIC); console.info("result = " + result); /* 输出结果:result = TWFuaXNkaXN0aW5ndWlzaGVkbm90b25seWJ5aGlzcmVhc29uYnV0Ynl0aGlzc2luZ3VsYXJwYXNzaW9uZnJvbW90aGVyYW5pbWFsc3doaWNoaXNhbHVzdG9mdGhlbWluZGV4Y2VlZHN0aGVzaG9ydHZlaGVtZW5jZW9mYW55Y2FybmFscGxlYXN1cmU= */ // MIME_URL_SAFE编码 let base64Helper = new util.Base64Helper(); let array = new Uint8Array([77, 97, 110, 105, 115, 100, 105, 115, 116, 105, 110, 103, 117, 105, 115, 104, 101, 100, 110, 111, 116, 111, 110, 108, 121, 98, 121, 104, 105, 115, 114, 101, 97, 115, 111, 110, 98, 117, 116, 98, 121, 116, 104, 105, 115, 115, 105, 110, 103, 117, 108, 97, 114, 112, 97, 115, 115, 105, 111, 110, 102, 114, 111, 109, 111, 116, 104, 101, 114, 97, 110, 105, 109, 97, 108, 115, 119, 104, 105, 99, 104, 105, 115, 97, 108, 117, 115, 116, 111, 102, 116, 104, 101, 109, 105, 110, 100, 101, 120, 99, 101, 101, 100, 115, 116, 104, 101, 115, 104, 111, 114, 116, 118, 101, 104, 101, 109, 101, 110, 99, 101, 111, 102, 97, 110, 121, 99, 97, 114, 110, 97, 108, 112, 108, 101, 97, 115, 117, 114, 101]); let result = base64Helper.encodeToStringSync(array, util.Type.BASIC_URL_SAFE); console.info("result = " + result); /* 输出结果:result = TWFuaXNkaXN0aW5ndWlzaGVkbm90b25seWJ5aGlzcmVhc29uYnV0Ynl0aGlzc2luZ3VsYXJwYXNzaW9uZnJvbW90aGVyYW5pbWFsc3doaWNoaXNhbHVzdG9mdGhlbWluZGV4Y2VlZHN0aGVzaG9ydHZlaGVtZW5jZW9mYW55Y2FybmFscGxlYXN1cmU */ // MIME_URL_SAFE编码 let base64Helper = new util.Base64Helper(); let array = new Uint8Array([77, 97, 110, 105, 115, 100, 105, 115, 116, 105, 110, 103, 117, 105, 115, 104, 101, 100, 110, 111, 116, 111, 110, 108, 121, 98, 121, 104, 105, 115, 114, 101, 97, 115, 111, 110, 98, 117, 116, 98, 121, 116, 104, 105, 115, 115, 105, 110, 103, 117, 108, 97, 114, 112, 97, 115, 115, 105, 111, 110, 102, 114, 111, 109, 111, 116, 104, 101, 114, 97, 110, 105, 109, 97, 108, 115, 119, 104, 105, 99, 104, 105, 115, 97, 108, 117, 115, 116, 111, 102, 116, 104, 101, 109, 105, 110, 100, 101, 120, 99, 101, 101, 100, 115, 116, 104, 101, 115, 104, 111, 114, 116, 118, 101, 104, 101, 109, 101, 110, 99, 101, 111, 102, 97, 110, 121, 99, 97, 114, 110, 97, 108, 112, 108, 101, 97, 115, 117, 114, 101]); let result = base64Helper.encodeToStringSync(array, util.Type.MIME_URL_SAFE); console.info("result = " + result); /* 输出结果:result = TWFuaXNkaXN0aW5ndWlzaGVkbm90b25seWJ5aGlzcmVhc29uYnV0Ynl0aGlzc2luZ3VsYXJwYXNz aW9uZnJvbW90aGVyYW5pbWFsc3doaWNoaXNhbHVzdG9mdGhlbWluZGV4Y2VlZHN0aGVzaG9ydHZl aGVtZW5jZW9mYW55Y2FybmFscGxlYXN1cmU */ ``` # 解码 将输入参数解码后输出对应Uint8Array对象。 ``` decodeSync(src: Uint8Array | string, options?: Type): Uint8Array ``` **参数:** - src:`Uint8Array | string` 类型,必填,待解码的`Uint8Array` 对象或者字符串。 - options:Type类型,此参数可选,可选值为: - 当参数取值为 `util.Type.BASIC`,表示Base64解码。**默认值** - 当参数取值为 `util.Type.MIME`,表示Base64解码,src入参包含回车符、换行符。 - 当参数取值为 `util.Type.BASIC_URL_SAFE`,表示Base64URL解码。 - 当参数取值为 `util.Type.MIME_URL_SAFE`,表示Base64URL解码,src入参包含回车符、换行符。 **返回值:**`Uint8Array` 类型,返回解码后新分配的Uint8Array对象。 ### 例子 ``` let base64Helper = new util.Base64Helper(); let buff = 'TWFuaXNkaXN0aW5ndWlzaGVkbm90b25seWJ5aGlzcmVhc29uYnV0Ynl0aGlzc2luZ3VsYXJwYXNz\r\naW9uZnJvbW90aGVyYW5pbWFsc3doaWNoaXNhbHVzdG9mdGhlbWluZGV4Y2VlZHN0aGVzaG9ydHZl\r\naGVtZW5jZW9mYW55Y2FybmFscGxlYXN1cmU=\r\n'; let result = base64Helper.decodeSync(buff, util.Type.MIME); console.info("result = " + result); /* 输出结果:result = 77,97,110,105,115,100,105,115,116,105,110,103,117,105,115,104,101,100,110,111,116,111,110,108,121,98,121,104,105,115,114,101,97,115,111,110,98,117,116,98,121,116,104,105,115,115,105,110,103,117,108,97,114,112,97,115,115,105,111,110,102,114,111,109,111,116,104,101,114,97,110,105,109,97,108,115,119,104,105,99,104,105,115,97,108,117,115,116,111,102,116,104,101,109,105,110,100,101,120,99,101,101,100,115,116,104,101,115,104,111,114,116,118,101,104,101,109,101,110,99,101,111,102,97,110,121,99,97,114,110,97,108,112,108,101,97,115,117,114,101 */ ``` 原文出处:http://malaoshi.top/show_1GW2OPRLaJuS.html