HarmonyOS 鸿蒙Next Base64长字符串如何完整打印出来,麻烦给个demo
HarmonyOS 鸿蒙Next Base64长字符串如何完整打印出来,麻烦给个demo
编码解码可参考
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