将ASCII值数组转换为一个字符串

问题描述 投票:0回答:2

使用Node-RED / JS的ASCII值数组,我需要将所有内容转换为一个长字符串。为了处理数组中不同数量的值,我发现了String.fromCharCode.apply(null,msg.payload);很棒,并且我的有效负载已按预期进行了转换-或至少部分进行了转换。

有效负载由许多布尔值和整数组成,最后是一个字符串。它输出的字符串很好,但不会转换整数和布尔值(暂时为3s和0s)。该数组包含121个ASCII值,但是字符串输出只有〜77个字符长。换句话说,

[0,45,83,51,0,0,0,0,1,0,0,0,14,0,202,0,19,162,0,0,0,0,0,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,49,53,55,52,48,55,57,54,57,50,56,48,54,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,70,86,32,1,0,0,99,103,114,111,117,112,47,99,32,0,0,0,0,0,0,0,0,0,0,0,0,71,80,82,77,67,44,49,50,50,49,51,50,46,48,48,44,65,44,52,52,52,52,46,50,48,56,48,53,44,78,44,48,48,52,52,52,46,50,55,51,50,51,44,69,44,48,46,48,49,51,44,44,49,56,49,49,49,57,44,44,44,68,42,55,55,13,0,13,0,48,48,48,42,54,68,13,0,50,44,0,0]

转换为类似

-S3yÆ1574241874748,092421.00,A,1324.56789,N,12345.56789,E,0.024,,201119,,,D*73`, while it would expect it to be something like `0,0,0,0,3,3,3,3,3,3,3,3,1574241874748,092421.00,A,1324.56789,N,12345.56789,E,0.024,,201119,,,D*73

注意:-S3yÆ并非一开始就完全是输出,因为其中有一些特殊字符(显示为Æ,但我不认为它确实是,并且它也有所不同并且不能由剪贴板处理)。我怀疑这是需要照顾的罪魁祸首。输入中有很多空值,我怀疑它们会导致fromCharCode问题。

javascript ascii node-red
2个回答
0
投票

您要尝试的是解析二进制打包的数据结构。试图一次将整个内容转换为字符串char是不正确的方法。

该字符串看起来像是NEMA GPS字符串,所以我建议您将npm gps-module之类的内容作为自定义Node-RED节点的起点,或者至少暗示要包含在函数中的内容节点。


-1
投票

使用数组reduce,效果很好。

let arr = [0,45,83,51,0,0,0,0,1,0,0,0,14,0,202,0,19,162,0,0,0,0,0,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,49,53,55,52,48,55,57,54,57,50,56,48,54,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,70,86,32,1,0,0,99,103,114,111,117,112,47,99,32,0,0,0,0,0,0,0,0,0,0,0,0,71,80,82,77,67,44,49,50,50,49,51,50,46,48,48,44,65,44,52,52,52,52,46,50,48,56,48,53,44,78,44,48,48,52,52,52,46,50,55,51,50,51,44,69,44,48,46,48,49,51,44,44,49,56,49,49,49,57,44,44,44,68,42,55,55,13,0,13,0,48,48,48,42,54,68,13,0,50,44,0,0]
let str = arr.reduce(function(str,value){return str + String.fromCharCode(value)},"")

console.log(str)
console.log(str.length)
console.log(arr.length)
© www.soinside.com 2019 - 2024. All rights reserved.