Labview将hexformatted字符串转换为ascii

时间:2018-04-16 19:14:49

标签: labview

在labview中我试图将十六进制字符串转换为ascii格式。例如,如果我有一个十六进制字符串,如:09124E4F21CD0024FFFFFFFFFFFFFFFF,则ascii版本是:NO!Í或基本上是一堆难以辨认的符号。我尝试使用将hexstring转换为数字的labview函数,但它们不起作用。如何将ascii部分转换为hexformatted ascii?

1 个答案:

答案 0 :(得分:1)

Hexadecimal String to Number工作正常,但仅适用于表示可以存储为数字数据类型的数字的十六进制字符串:

  

如果输入字符串表示超出范围的数字   number的表示形式,number被设置为该值的最大值   数据类型。

您的示例输入为128位长,而当前LabVIEW中的最长整数数据类型为64位。

您可以使用此功能,但您需要一次转换输入一个字节:

  • 创建While循环并添加移位寄存器。用输入字符串初始化移位寄存器。
  • 在循环内部,将移位寄存器中的字符串连接到Search/Split String函数的string输入
  • 将数字常量2连接到offset输入 - 即将字符串拆分为前两个字符,其余字符
  • match + rest of string输出连接到右侧移位寄存器端子
  • substring before match输出连接到十六进制字符串到数字函数
  • 将此函数的default输入连接到值为0的数字常量并键入U8
  • 将此函数的输出连接到While循环的右侧,并使终端编制索引(通过右键单击)
  • 当传回移位寄存器的字符串为空时,使用Empty String/Path?函数退出While循环。

您创建的索引终端的输出现在将是一个U8(字节)数组,其中包含从输入字符串转换的数据。如果您想以字符串形式使用,可以使用Byte Array to String转换它。

这假设您的输入字符串总是长度为2个字符的倍数。如果您需要它来处理诸如"3F2"之类的输入,那么在将其传递到循环之前,您需要检查此输入并对输入执行某些操作(我会让您弄清楚是什么)。