VB 一个16进制转换字节数组

我有一个16进制 &H151 转换字节数组里应该怎么转换啊,新手求帮助。
比如是:
dim k as long
k=&H151
转换成字节数组应该是:
dim 数组(1 To 2) As Byte
数组(1)=CByte(51)
数组(1)=CByte(1)
转换后应该是这样,但是就是转换不出来。应该怎么写,新手求帮助,非常感谢看贴朋友们。

VB可使用API函数CopyMemory实现将一个Long数据转换为Byte字节。

Long(长整型)变量存储为 32 位(4
个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号
(&)。

适当范围内的数字,前缀以 &H,可以直接表示十六进制数字。例如,十六进制表示法的 &H10
代表十进制的 16。

实现代码如下:

Option Explicit
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Dim Buffer(3) As Byte

Private Sub LngToBin_Click()
    Dim i As Integer
    Dim hexData As String
    Dim a As Long
    a = Val(Text1)
    CopyMemory Buffer(0), a, 4
    For i = 0 To UBound(Buffer)
        Debug.Print Buffer(i) '输出转换后的字节值
    Next
End Sub

Private Sub Form_Load()
    Text1 = "&H151"
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-09
&H151 = 337 ,你想保存到字节数组,需要两个字节:
Private Sub Command1_Click()
Dim k As Long
k = &H151

Dim 数组(1 To 2) As Byte
数组(1) = CByte(&H51)
数组(2) = CByte(1)

Print Hex(数组(2) * 256 + 数组(1))
End Sub追问

不是这样的,我是比如,&H2E8D 这个数值我要把他放在字节数组里
比如数组里应该是这样:
Dim 数组(1 To 2) As Byte
数组(1) = CByte(&H8D)
数组(2) = CByte(&HE2)
但是如何放进去呢。
还有这个 &H151 三位数的十六进制我又如何放进去呢
放进去后是这样
Dim 数组(1 To 2) As Byte
数组(1) = CByte(&H51)
数组(2) = CByte(1)

第2个回答  2011-11-09
Public Function Int_to_Byte(Datai As Integer) As String
Dim ReturnData(0 To 1) As Byte

ReturnData(0) = (Datai And &H7F00) / 256

If (Datai And &H8000) <> 0 Then
ReturnData(0) = ReturnData(0) Or &H80
End If

ReturnData(1) = Datai And &H7F

If (Datai And ("&H" & "0080")) <> 0 Then
ReturnData(1) = ReturnData(1) Or &H80
End If

Int_to_Byte = ReturnData
End Function

' 调用举例
Private Sub Command1_Click()
Dim i() As Byte

i = Int_to_Byte(&H2E8D)

MsgBox Hex(i(0)) & " " & Hex(i(1))
End Sub本回答被提问者采纳
相似回答