Удалите нулевой Char из String после преобразования Byte () в String в VB.net - PullRequest
0 голосов
/ 16 января 2020

У меня есть строка, которая приходит из DLL. Предположительно, строка преобразуется из Byte () в dll.

Ниже приведен фрагмент для получения значения из 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

Я хочу преобразовать строку в шестнадцатеричное значение. Когда я попытался подтвердить правильность шестнадцатеричного результата, используя шестнадцатеричный конвертер в inte rnet. Шестнадцатеричное значение не одинаково.

Я подозреваю, что в строке есть какое-то нулевое значение, потому что когда я вывожу строку в текстовое поле и преобразовываю ее, она дает правильное шестнадцатеричное значение. Например: 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)

Спасибо.

1 Ответ

0 голосов
/ 17 января 2020

Я не уверен, что был ноль. Но я уверен, что он закодирован как ASCII. Предполагается, что строка перед записью в шестнадцатеричном формате должна быть такой!

В любом случае, спасибо. Я уже получил ответ. Поскольку я знаю, что строка всегда будет 16 символов.

Я использую **

strResultA = strValueA.Substring (0, 16)

**, чтобы получить только 16 символов, которые я хочу.

...