首页 > 解决方案 > 在 VB.net 中将 Byte() 转换为 String 后从 String 中删除 null Char

问题描述

我有一个来自 dll 的字符串。据说,字符串是从 dll 中的 Byte() 转换而来的。

下面是我如何从 dll 获得价值的片段:

    'DLL declare : Public Function getData(boolData as Boolean, strData1 as String, strData2 as String) as Boolean 

    Call objValue.getValue(True, strValueA, strValueB) 

    strResultA = strValueA

我想将字符串转换为十六进制值。当我尝试在互联网上使用十六进制转换器确认十六进制结果是否正确时。十六进制值不一样。

我怀疑它在字符串中有一些空值,因为当我将字符串输出到文本框并转换它时,它会给出正确的十六进制值。例如:toHex(tbResultA.text),将给出正确的十六进制值。

如何从字符串中删除空字符?我尝试了多种方法来删除它,但它不起作用。这是我尝试过的片段:

    1. strResultA = strValueA.Replace(vbNullChar, "")

    2. strResultA = strValueA.Replace(Chr(0, "")

    3. strResultA = strValueA.Replace(Convert.ToChar(0), "")

    4. strResultA = strValueA.Replace(Convert.vbNullChar, "")

    5. strResultA = Replace(strValueA, Chr(0), "")

这是我将字符串转换为十六进制的代码段:

    Private Function toHex(ByVal strValue As String) As String
      Dim byteArray() As Byte
      Dim hex As System.Text.StringBuilder = New System.Text.StringBuilder
      byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(strValue)
      For i As Integer = 0 To byteArray.Length - 1
         hex.Append(byteArray(i).ToString("x"))
      Next
      Return hex.ToString()
    End Function


    'My fuction calling, strHexA will be kept in a text file:
    Dim strHexA as String = toHex(strResultA)

谢谢。

标签: stringvb.netcharacter-encodingnull-character

解决方案


我不确定是否有空值。但我确信它被编码为 ASCII。字符串假设在十六进制之前是这样的“!N029dR_:OV7LHdN”。

总之感谢。我已经得到了答案。因为我知道字符串总是 16 个字符。

我用 **

strResultA = strValueA.Substring(0, 16)

** 只获得我想要的 16 个字符。


推荐阅读