1
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
## 1.0.2(2025-07-25)
|
||||
* 兼容原生鸿蒙
|
||||
## 1.0.1(2025-02-10)
|
||||
* 兼容所有平台
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"id": "x-base64toarraybuff-s",
|
||||
"displayName": "x-base64toarraybuff-s",
|
||||
"version": "1.0.0",
|
||||
"description": "x-base64toarraybuff-s",
|
||||
"keywords": [
|
||||
"x-base64toarraybuff-s"
|
||||
],
|
||||
"repository": "",
|
||||
"engines": {
|
||||
"HBuilderX": "^3.6.8"
|
||||
},
|
||||
"dcloudext": {
|
||||
"type": "uts",
|
||||
"sale": {
|
||||
"regular": {
|
||||
"price": "0.00"
|
||||
},
|
||||
"sourcecode": {
|
||||
"price": "0.00"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"qq": ""
|
||||
},
|
||||
"declaration": {
|
||||
"ads": "",
|
||||
"data": "",
|
||||
"permissions": ""
|
||||
},
|
||||
"npmurl": ""
|
||||
},
|
||||
"uni_modules": {
|
||||
"dependencies": [],
|
||||
"encrypt": [],
|
||||
"platforms": {
|
||||
"cloud": {
|
||||
"tcb": "u",
|
||||
"aliyun": "u",
|
||||
"alipay": "u"
|
||||
},
|
||||
"client": {
|
||||
"Vue": {
|
||||
"vue2": "u",
|
||||
"vue3": "u"
|
||||
},
|
||||
"App": {
|
||||
"app-android": "u",
|
||||
"app-ios": "u",
|
||||
"app-harmony": "u"
|
||||
},
|
||||
"H5-mobile": {
|
||||
"Safari": "u",
|
||||
"Android Browser": "u",
|
||||
"微信浏览器(Android)": "u",
|
||||
"QQ浏览器(Android)": "u"
|
||||
},
|
||||
"H5-pc": {
|
||||
"Chrome": "u",
|
||||
"IE": "u",
|
||||
"Edge": "u",
|
||||
"Firefox": "u",
|
||||
"Safari": "u"
|
||||
},
|
||||
"小程序": {
|
||||
"微信": "u",
|
||||
"阿里": "u",
|
||||
"百度": "u",
|
||||
"字节跳动": "u",
|
||||
"QQ": "u",
|
||||
"钉钉": "u",
|
||||
"快手": "u",
|
||||
"飞书": "u",
|
||||
"京东": "u"
|
||||
},
|
||||
"快应用": {
|
||||
"华为": "u",
|
||||
"联盟": "u"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
# x-base64toarraybuff-s
|
||||
|
||||
### 兼容性
|
||||
|
||||
| Harmony | IOS | Android | WEB | 小程序 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 支持 | 支持 | 支持 | 支持 | 支持 |
|
||||
|
||||
### 开发文档
|
||||
|
||||
这是一个跨平台的base64和ArrayBuffer转换工具,提供了两个主要API:
|
||||
|
||||
#### base64ToArrayBuffer
|
||||
|
||||
将Base64字符串转换为ArrayBuffer。
|
||||
|
||||
**参数:**
|
||||
- data: string - 需要转换的Base64字符串
|
||||
|
||||
**返回值:**
|
||||
- ArrayBuffer - 转换后的二进制数据
|
||||
|
||||
**示例:**
|
||||
```ts
|
||||
|
||||
import { base64ToArrayBuffer } from "@/uni_modules/x-base64toarraybuff-s"
|
||||
|
||||
const base64Str = "SGVsbG8gV29ybGQ="
|
||||
const buffer = base64ToArrayBuffer(base64Str)
|
||||
```
|
||||
|
||||
#### arrayBufferToBase64
|
||||
|
||||
将ArrayBuffer转换为Base64字符串。
|
||||
|
||||
**参数:**
|
||||
- data: ArrayBuffer - 需要转换的二进制数据
|
||||
|
||||
**返回值:**
|
||||
- string - 转换后的Base64字符串
|
||||
|
||||
**示例:**
|
||||
```ts
|
||||
|
||||
import { arrayBufferToBase64 } from "@/uni_modules/x-base64toarraybuff-s"
|
||||
|
||||
const buffer = new ArrayBuffer(8)
|
||||
const base64Str = arrayBufferToBase64(buffer)
|
||||
```
|
||||
|
||||
### 使用说明
|
||||
|
||||
1. 使用前,如果是win请先在页面引用,打基座,再编译使用
|
||||
2. 如果你是Mac用户不需要打基座,直接引用使用
|
||||
3. 如果你是加密插件用户,不管是win,mac都要打基座。
|
||||
|
||||
### 注意事项
|
||||
|
||||
1. 该插件在所有平台(iOS、Android、Web、小程序)上均可用
|
||||
2. 转换过程中会自动处理不同平台的实现差异,开发者无需关心具体实现
|
||||
3. 建议在处理大量数据时进行适当的性能优化
|
||||
@@ -0,0 +1,10 @@
|
||||
import Base64 from "android.util.Base64"
|
||||
import ByteBuffer from 'java.nio.ByteBuffer';
|
||||
|
||||
export const base64ToArrayBuffer = (data : string) :ArrayBuffer => {
|
||||
return ArrayBuffer.fromByteBuffer(ByteBuffer.wrap(Base64.decode(data, Base64.DEFAULT)))
|
||||
}
|
||||
|
||||
export const arrayBufferToBase64 = (data : ArrayBuffer) : string => {
|
||||
return Base64.encodeToString(data.toByteBuffer().array(),Base64.DEFAULT)
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"x_library_s": "./lib/x_library_s.har"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import { util } from "@kit.ArkTS";
|
||||
import { BusinessError } from "@kit.BasicServicesKit";
|
||||
|
||||
/**
|
||||
* 将base64数据转换为arraybuffer
|
||||
* @param data base64数据
|
||||
* @returns Promise<ArrayBuffer>
|
||||
*/
|
||||
function btoa_x(data: string): ArrayBuffer {
|
||||
const base64 = new util.Base64Helper();
|
||||
const dataSplit = data.split(",");
|
||||
const uint8Array = base64.decodeSync(dataSplit.length > 1 ? data.split(",")[1] : data);
|
||||
const buffer: ArrayBuffer = uint8Array.buffer.slice(0, uint8Array.byteLength);
|
||||
|
||||
return buffer
|
||||
}
|
||||
|
||||
function atob_x(data:ArrayBuffer){
|
||||
const base64 = new util.Base64Helper();
|
||||
const unit8data = new Uint8Array(data)
|
||||
return base64.encodeToStringSync(unit8data)
|
||||
}
|
||||
|
||||
export const base64ToArrayBuffer = (data : string) :ArrayBuffer => {
|
||||
try {
|
||||
return btoa_x(data)
|
||||
} catch (error) {
|
||||
const e = error as BusinessError;
|
||||
console.error("TMUI",e.message)
|
||||
return new ArrayBuffer(0)
|
||||
}
|
||||
}
|
||||
|
||||
export const arrayBufferToBase64 = (data : ArrayBuffer) : string => {
|
||||
try {
|
||||
return atob_x(data)
|
||||
} catch (error) {
|
||||
const e = error as BusinessError;
|
||||
console.error("TMUI",e.message)
|
||||
return ''
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"deploymentTarget": "12"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { Data } from 'Foundation';
|
||||
export const base64ToArrayBuffer = (data : string) : ArrayBuffer => {
|
||||
let dadx = new Data(base64Encoded = data)
|
||||
if(dadx == null) return new ArrayBuffer(0)
|
||||
return ArrayBuffer.fromData(dadx!)
|
||||
|
||||
}
|
||||
|
||||
export const arrayBufferToBase64 = (data : ArrayBuffer) : string => {
|
||||
let dadx = data.toData()
|
||||
return dadx.base64EncodedString()
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
let lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
|
||||
for (let i = 0; i < chars.length; i++) {
|
||||
lookup[chars.charCodeAt(i)] = i;
|
||||
}
|
||||
export const encode = function (arraybuffer) {
|
||||
let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';
|
||||
for (i = 0; i < len; i += 3) {
|
||||
base64 += chars[bytes[i] >> 2];
|
||||
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
|
||||
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
|
||||
base64 += chars[bytes[i + 2] & 63];
|
||||
}
|
||||
if (len % 3 === 2) {
|
||||
base64 = base64.substring(0, base64.length - 1) + '=';
|
||||
}
|
||||
else if (len % 3 === 1) {
|
||||
base64 = base64.substring(0, base64.length - 2) + '==';
|
||||
}
|
||||
return base64;
|
||||
};
|
||||
|
||||
export const decode = function (base64) {
|
||||
let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
|
||||
if (base64[base64.length - 1] === '=') {
|
||||
bufferLength--;
|
||||
if (base64[base64.length - 2] === '=') {
|
||||
bufferLength--;
|
||||
}
|
||||
}
|
||||
let arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
|
||||
for (i = 0; i < len; i += 4) {
|
||||
encoded1 = lookup[base64.charCodeAt(i)];
|
||||
encoded2 = lookup[base64.charCodeAt(i + 1)];
|
||||
encoded3 = lookup[base64.charCodeAt(i + 2)];
|
||||
encoded4 = lookup[base64.charCodeAt(i + 3)];
|
||||
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
|
||||
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
||||
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
||||
}
|
||||
return arraybuffer;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
import {decode,encode} from "./base64ToArraybuffer.uts"
|
||||
|
||||
export const base64ToArrayBuffer = (data : string) :ArrayBuffer => {
|
||||
return decode(data)
|
||||
}
|
||||
|
||||
export const arrayBufferToBase64 = (data : ArrayBuffer) : string => {
|
||||
return encode(data)
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
let lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
|
||||
for (let i = 0; i < chars.length; i++) {
|
||||
lookup[chars.charCodeAt(i)] = i;
|
||||
}
|
||||
export const encode = function (arraybuffer) {
|
||||
let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';
|
||||
for (i = 0; i < len; i += 3) {
|
||||
base64 += chars[bytes[i] >> 2];
|
||||
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
|
||||
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
|
||||
base64 += chars[bytes[i + 2] & 63];
|
||||
}
|
||||
if (len % 3 === 2) {
|
||||
base64 = base64.substring(0, base64.length - 1) + '=';
|
||||
}
|
||||
else if (len % 3 === 1) {
|
||||
base64 = base64.substring(0, base64.length - 2) + '==';
|
||||
}
|
||||
return base64;
|
||||
};
|
||||
|
||||
export const decode = function (base64) {
|
||||
let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
|
||||
if (base64[base64.length - 1] === '=') {
|
||||
bufferLength--;
|
||||
if (base64[base64.length - 2] === '=') {
|
||||
bufferLength--;
|
||||
}
|
||||
}
|
||||
let arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
|
||||
for (i = 0; i < len; i += 4) {
|
||||
encoded1 = lookup[base64.charCodeAt(i)];
|
||||
encoded2 = lookup[base64.charCodeAt(i + 1)];
|
||||
encoded3 = lookup[base64.charCodeAt(i + 2)];
|
||||
encoded4 = lookup[base64.charCodeAt(i + 3)];
|
||||
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
|
||||
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
||||
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
||||
}
|
||||
return arraybuffer;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
import {decode,encode} from "./base64ToArraybuffer.uts"
|
||||
|
||||
export const base64ToArrayBuffer = (data : string) :ArrayBuffer => {
|
||||
return decode(data)
|
||||
}
|
||||
|
||||
export const arrayBufferToBase64 = (data : ArrayBuffer) : string => {
|
||||
return encode(data)
|
||||
}
|
||||
Reference in New Issue
Block a user