Labview 将 hex 格式的字符串转换为 ascii

Labview converting hexformatted string to ascii

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

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

If the input string represents a number outside the range of the representation of number, number is set to the maximum value for that data type.

您的示例输入是 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" 之类的输入,您需要检查这一点并在将其传递到循环之前对输入做一些事情(我会让您弄清楚是什么)。