Перестановка порядка байтов в vba - PullRequest
0 голосов
/ 14 февраля 2012

Я создаю таблицу Excel, которая должна быть способна принимать список параметров (различных размеров, со знаком и без знака) в десятичном формате, и генерировать шестнадцатеричную строку из этого. Проблема, однако, заключается в том, что параметры в строке должны иметь порядок байтов, тогда как сама строка будет иметь порядок байтов. Я использую VBA для этого, но я новичок в этом и сталкиваюсь с трудностями. Я думаю, что мне нужно поменять порядком байтов каждого параметра, прежде чем добавить его в строку. Я посмотрел об этом сайте и в Интернете и не нашел каких-либо простых решений для того, что я думаю, должно быть простой проблемой. Если у кого-то есть какие-либо предложения, мы будем очень признательны.

Мой код для генерации строки показан ниже:

Sub Generate_String ()

Dim funcset As String
Dim y As String
x = 0
z = 0
funcset = ""
'while variant column is not empty
Do While ((Trim(Cells(2, 4 + z).Value) <> "") And (Trim(Cells(2, 4 + z).Value) <> "0"))

    Do
        'check if last cell in the column
        If Trim(Cells(4 + x, 1).Value) = "VALUE" Then
            'convert cell contents to hex
             y = Hex(Cells(3 + x, 4 + z).Value)

            'add the converted value to the string
            funcset = funcset + "0x" + y
            x = x + 1

        Else
            'convert cell contents to hex
            y = Hex(Cells(3 + x, 4 + z).Value)
            'add the converted value to the string
            funcset = funcset + "0x" + y + " " 
            x = x + 1

        End If
    ' continue until end of column is reached
    Loop While Trim(Cells(3 + x, 1).Value) <> "VALUE"

    'write the string  to corresponding cell
    Cells(3 + x, 4 + z).Value = funcset
    funcset = ""
    x = 0
    z = z + 1

Loop

End Sub

Вот некоторые примеры данных: Данные имеют сгенерированную строку, но не был выполнен обмен endianess The data has a string generated, but endianess swap has not been done

1 Ответ

0 голосов
/ 30 марта 2012

Я не знаю VBA, но вот алгоритм, которому я буду следовать.

for each parameter in parameter_list
    for i = 1 to (number of bytes in parameter type)
        append 2-character hex value of (parameter mod 256) to string
        parameter = parameter / 256

Если синтаксис VBA похож на функцию Excel, я думаю, вы можете добавить второй параметр, ,2 дляВаш HEX() вызов функции, чтобы заставить его использовать 2 символа.

...