Преобразование шестнадцатеричных строк в десятичные строки в Visual Basic для приложений (Excel) - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь преобразовать шестнадцатеричную строку в десятичную строку для ввода в электронную таблицу Excel, но мне не повезло найти какие-либо решения этой проблемы.Я могу успешно отобразить шестнадцатеричную строку в Excel, но я хочу преобразовать ее в десятичную строку перед ее отправкой в ​​электронную таблицу Excel.

Я пробовал следующее (также см. Закомментированный код):

Private Function ToHexString(ByRef buffer As Variant) As String
    ReDim bytes(LBound(buffer) + 6 To LBound(buffer) + 9)
    Dim i As Long
    For i = LBound(buffer) + 6 To LBound(buffer) + 9
        bytes(i) = Hex(buffer(i))
    Next
    ToHexString = Strings.Join(bytes, "")
End Function

Function FromHex(hexString As String) As Long
    FromHex = Val("&H" & hexString)
End Function

Private Sub StrokeReader1_CommEvent(ByVal Evt As StrokeReaderLib.Event, ByVal data As Variant)
  Select Case Evt
    Case EVT_DISCONNECT
        Debug.Print "Disconnected"

    Case EVT_CONNECT
        Debug.Print "Connected"

    Case EVT_DATA
        buf = StrokeReader1.Read(BINARY) 'Use BINARY to receive a byte array
        Debug.Print ToHexString(buf)
       ' Debug.Print buf
      '  Debug.Print "myStr length: " & Len(buf)
           'using `StrConv` to allow for 2-byte unicode character storage

       ' dist = Convert.ToInt32("c001", 16)



       ' ActiveSheet.Range("A1").Value = ToHexString(buf)
    ' int number = Convert.ToInt32(buf, 16);

        'buf = "0081C"

       ' Dim i As Integer = Convert.ToInt32("c001", 16)

       'hexDist = ToHexString(buf)
       'distInt As Integer = Convert.ToInt32(hexDist, 16)

        'decLong = FromHex(buf)

        Dim hexVal As String
        hexVal = ToHexString(buf)
        Dim intVal As Integer
        intVal = Convert.ToInt32(hexVal, 16)

        ActiveCell.Value = intVal
        ActiveCell.Offset(1, 0).Select




  End Select
End Sub

Шестнадцатеричная строка обычно выглядит следующим образом: 00A57 и вывод десятичной строки должен выглядеть следующим образом: 2647

Я получаю синтаксические ошибки или ошибку 402, в зависимости от того, что я пытаюсь заставить работать.

1 Ответ

1 голос
/ 07 июля 2019

Измените соответствующую часть вашего кода на:

Dim intVal as Long
intVal = FromHex(hexVal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...