交换vba中参数的字节顺序

时间:2012-02-14 16:19:02

标签: excel vba endianness

我正在创建一个excel表,它需要能够以十进制格式接收参数列表(不同大小,有符号和无符号),并从中生成一个十六进制字符串。然而问题是字符串中的参数需要是小端,而字符串本身将是大端。我正在使用VBA来做这件事,但我对它很陌生并且遇到了困难。我想在将其添加到字符串之前需要交换每个参数的endianess。我看过这个网站和网站,并没有找到任何简单的解决方案,我猜猜应该是一个简单的问题。如果有人有任何建议,将不胜感激。

到目前为止,我生成字符串的代码如下所示:

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 :(得分:0)

我不知道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个字符。