uni-app在app端如何处理字节数组数据?

发布于 1周前 作者 sinazl 来自 uni-app

uni-app在app端如何处理字节数组数据?

问题描述

  1. uniapp 开发的app对接pda设备扫描,设备返回的数据为字节数组数据,uniapp如何将之转换为字符串,使用
    let code = intent.getByteArrayExtra("data");
    var byteArray = new Uint8Array(code);
    var decoder = new TextDecoder("utf-8");
    let decodedString = decoder.decode(byteArray);
    console.log("扫码结果", decodedString);
    
    code 为:[77,49,76,73,68,65,87,69,73,32,32,32,32,32,32,32,32,32,32,32,32,32,69,32,32,32,32,32,32,32,75,87,69,84,89,78,72,79,32,49,57,48,49,32,51,48,53,69,48,51,54,72,48,48,50,48,32,49,50,66,62,49,48,51,48,77,77,48,69,48,49,56,51,52,48,53,54,48,55,50,54,50,48,78,73,53,50,50,50,50,57,49,57,56,56,49,49,49,48,48,52,49,51,35,57,48,-26,-99,-114,-27,-92,-89,-28,-72,-70,35,57,49,-24,-76,-75,-23,-104,-77,35,57,50,-27,-92,-86,-27,-114,-97,35,57,51,50,48,52,35,57,52,49,48,58,49,48] 这段代码无法转换,启动debug模式又可以拿到数据,云打包之后又无法获取

图片


2 回复

请问最后解决了吗


在uni-app中处理字节数组数据,尤其是在app端,通常涉及到数据的接收、解析、存储和展示等多个环节。下面是一个处理字节数组数据的代码示例,包括从接口获取数据、解析字节数组以及将其转换为可显示的内容(如图片)。

1. 从接口获取字节数组数据

假设我们有一个接口返回图片的字节数组数据,我们可以使用uni.request来获取这些数据。

uni.request({
    url: 'https://example.com/api/getImageData', // 替换为实际的接口地址
    method: 'GET',
    success: (res) => {
        if (res.statusCode === 200) {
            const byteArray = res.data; // 假设接口直接返回字节数组
            handleByteArray(byteArray);
        } else {
            console.error('Failed to fetch data:', res.statusCode);
        }
    },
    fail: (err) => {
        console.error('Request failed:', err);
    }
});

2. 解析并处理字节数组数据

假设我们获取到的数据是图片的字节数组,我们可以将其转换为Base64编码,然后在页面上显示。

function handleByteArray(byteArray) {
    // 将字节数组转换为Base64编码的字符串
    const base64String = arrayBufferToBase64(byteArray);
    
    // 假设我们在页面上有一个<image>标签,其src属性绑定到data中的imageSrc
    uni.setData({
        imageSrc: `data:image/png;base64,${base64String}` // 根据实际图片类型修改MIME类型
    });
}

// 辅助函数:将ArrayBuffer转换为Base64编码
function arrayBufferToBase64(buffer) {
    let binary = '';
    const bytes = new Uint8Array(buffer);
    const len = bytes.byteLength;
    for (let i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}

3. 在页面上显示图片

在页面的模板中,我们只需要一个<image>标签来显示图片。

<template>
    <view>
        <image :src="imageSrc" style="width: 100%; height: auto;"></image>
    </view>
</template>

<script>
export default {
    data() {
        return {
            imageSrc: '' // 初始化为空字符串
        };
    },
    methods: {
        // 上述的uni.request和handleByteArray等方法可以在这里或其他合适的位置定义
    }
};
</script>

以上代码展示了如何在uni-app的app端处理字节数组数据,包括从接口获取数据、将其转换为Base64编码的字符串,并在页面上显示。注意,根据具体的数据类型和展示需求,可能需要对代码进行适当的调整。

回到顶部