HarmonyOS 鸿蒙Next Base64长字符串如何完整打印出来,麻烦给个demo

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Base64长字符串如何完整打印出来,麻烦给个demo

Base64长字符串如何完整打印出来,麻烦给个dmeo

2 回复

编码解码可参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-util-V13#base64helper9

// 测试示例

onPageShow(): void {

// 解码

let str = 'eyJzdWIiOiJjcG9uZ28xIiwiWC1BcHBJRCI6IkNTRE4tQVBQIiwiWC1EZXZpY2UtSUQiOiI4MDM4OTNjOC0xMDllLTQyOTYtOTExMi1lMjM4YWFjY2QxMjgiLCJYLVJpc2stQ29udHJvbC1OdW0iOiIwIiwiYXVkIjoicGFzc3BvcnQiLCJleHAiOjE3MTg4NDc2MjgsImlhdCI6MTcxNjI1NTYyOH0';

// 来进行去除空格操作,然后使用以下操作进行处理:

let noSpacesStr = str.replace(/\s/g, '');

let base64 = new util.Base64Helper()

let decoRes = base64.decodeSync(noSpacesStr, util.Type.BASIC);

let textDecoder = util.TextDecoder.create('utf-8')

str = textDecoder.decodeWithStream(decoRes)

console.log('base64解码', str.toString())

// 本地验证 编码/解码都ok

let that = new util.Base64Helper();

let buff = '{"sub":"cpongo1","X-AppID":"CSDN-APP","X-Device-ID":"803893c8-109e-4296-9112-e238aaccd128","X-Risk-Control-Num":"0","aud":"passport","exp":1718847628,"iat":171625562}';

let strArray = new Uint8Array(buffer.from(buff).buffer)

let result = that.encodeToStringSync(strArray, util.Type.MIME);

console.log('Base64Helper--编码', result.toString())

//来进行去除空格操作,然后使用以下操作进行处理

let noSpaces = result.replace(/\s/g, '');

let result2 = that.decodeSync(noSpaces, util.Type.MIME);

buff = textDecoder.decodeWithStream(result2)

console.log('Base64Helper--解码', buff.toString())

console.log('main -onPageShow')

}

可以利用hilog封装log工具类检查日志长度,超出长度就分段打印,如:

class MyLog {
  static e(logTag: string, content: string) {
    const maxSize = 1024
    if (content.length <=
      maxSize) { // 长度小于等于限制直接打印 
      hilog.error(0xFF00, logTag, '%{public}s', content)
    } else {
      while (content.length >
        maxSize) { //循环分段打印 
        let logContent = content.substring(0, maxSize)
        content = content.replace(logContent, "")
        hilog.error(0xFF00, logTag, '%{public}s',
          logContent) // 打印剩余日志 
  } } } } 
aboutToAppear(): void { MyLog.e("test",this.waitingDecryptString) }

Hilog日志最长支持4096 个字节(包含结束符,

参考文档链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-hilog-V13

目前Hilog打印有固定缓存大小,单次打印的最大字符数为4096个字节,超出会被截断。推荐您使用以下两种方案:

1、建议分段打印,例如:

let logIndex = 0
for (let index = 0; index < strRes.length / 1000; index++) {
 let str = strRes.substring(logIndex, logIndex + 1000)
 hilog.info(0x0000, 'strRes:', '%{public}s', str);
 logIndex = logIndex + 1000
}

2、hdc shell hilog,使用命令行工具查看

hdc shell hilog > ./hilog.txt //输出文件存储在当前目录下的hilog.txt文档里

hdc参考文档:https://developer.huawei.com/consumer/cn/forum/topic/0202142270103418014?fid=0109140870620153026

更多关于HarmonyOS 鸿蒙Next Base64长字符串如何完整打印出来,麻烦给个demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,处理Base64长字符串的完整打印,可以通过将长字符串分段处理来实现,确保在控制台或日志中能够完整显示。以下是一个简单的Demo示例,用于演示如何打印一个较长的Base64字符串:

public class Base64PrintDemo {
    public static void main(String[] args) {
        String base64Str = "your_very_long_base64_string_here"; // 替换为你的Base64长字符串
        int chunkSize = 100; // 设定每段打印的字符数

        for (int i = 0; i < base64Str.length(); i += chunkSize) {
            int end = Math.min(i + chunkSize, base64Str.length());
            System.out.println(base64Str.substring(i, end));
        }
    }
}

在这个示例中,base64Str变量存储了你的Base64长字符串。chunkSize定义了每次打印的字符数量,你可以根据实际需要调整这个值。通过循环遍历字符串,并分段打印,可以确保长字符串能够完整地在控制台或日志中显示。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部