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

Javascript 将ASCII值数组转换为一个字符串,javascript,ascii,node-red,Javascript,Ascii,Node Red,对于节点RED/JS中的ASCII值数组,我需要将所有内容转换为一个长字符串。为了处理数组中不同数量的值,我找到了String.fromCharCode.apply(null,msg.payload);很好,我的有效载荷按照预期进行了转换——或者至少部分转换 有效负载由许多布尔值和整数组成,最后还有一个字符串。它输出的字符串很好,但是int和bool(暂时是3和0)没有转换。该数组包含121个ASCII值,但字符串输出仅约77个字符长。 换句话说, [0,45,83,51,0,0,0,0,1,0

对于节点RED/JS中的ASCII值数组,我需要将所有内容转换为一个长字符串。为了处理数组中不同数量的值,我找到了String.fromCharCode.apply(null,msg.payload);很好,我的有效载荷按照预期进行了转换——或者至少部分转换

有效负载由许多布尔值和整数组成,最后还有一个字符串。它输出的字符串很好,但是int和bool(暂时是3和0)没有转换。该数组包含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
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Æ1574241874748,092421.00,A,1324.56789,N,12345.56789,E,0.024,,201119,,,D*73
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
问题。

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


该字符串看起来是NMEA GPS字符串,因此我建议将npm之类的东西作为自定义节点红色节点的起点,或者至少作为功能节点中包含内容的提示。

另请参见,尽管它发音为“nema”,但拼写为NMEA。但我认为NMEA数据包是基于ASCII码的?这看起来是二进制的,其中有很多空值。你是对的,数据是一个字符串,但只有最后一部分。整个数据阵列来自一个PLC,GPS接收器与PLC相连。PLC还输出许多布尔值和模拟值,然后所有内容都以UDP消息的形式输出。使用现有的netvar receiver节点在某种程度上是可行的,但似乎有一个bug,这使得输出中不可能有两个单独的字符串值,至少在我们当前的配置中是这样。然后再看看您需要的是了解协议,最好是了解文档(或理解协议的库)但首先,您需要知道用于传输数据的协议是什么。在不了解协议的情况下,您只需对其进行反向工程,以了解如何解析数据。