
在VB里面long型怎样转成byte[]型
2个回答
展开全部
读入后输出,本来就是十进制的了。任何数据在磁盘上都是以二进制存储的。
Private Sub Command1_Click()
Dim b() As Byte, fName As String, lfile As Long, i As Long
fName = "c:\BOOTSECT.DOS"
lfile = FileLen(fName)
ReDim b(1 To lfile)
Open fName For Binary As 1#
Get #1, , b
Close
For i = 1 To lfile
Debug.Print b(i);
Next i
End Sub
将c:\BOOTSECT.DOS换成你需要的文件名就可以了
2009-4-17 09:10
PS:
如果存储的数是以long类型的标准的4个字节存储(存储在前面的为数据的低位,如:存储数据为03 02 01 00,实际是 &H00010203)的话,只需要把读入数的类型定义为long类型,循环的结束条件设为 lfile/4就可以了。
如果存储的数不是以long类型的标准存储的话,那就要用到CopyMemory。
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim b() As Byte, fName As String, lfile As Long, i As Long, j As Integer
Dim b1(0 To 3) As Byte, lngTMP As Long
On Error Resume Next
fName = "c:\BOOTSECT.DOS"
lfile = FileLen(fName)
ReDim b(1 To lfile)
Open fName For Binary As 1#
Get #1, , b
Close
For i = 1 To lfile / 4
For j = 0 To 3
b1(j) = b(i + 3 - j)
Debug.Print Hex(b1(j)); " ";
Next j
CopyMemory lngTMP, b1(0), 4
Debug.Print , lngTMP
Next i
End Sub
Private Sub Command1_Click()
Dim b() As Byte, fName As String, lfile As Long, i As Long
fName = "c:\BOOTSECT.DOS"
lfile = FileLen(fName)
ReDim b(1 To lfile)
Open fName For Binary As 1#
Get #1, , b
Close
For i = 1 To lfile
Debug.Print b(i);
Next i
End Sub
将c:\BOOTSECT.DOS换成你需要的文件名就可以了
2009-4-17 09:10
PS:
如果存储的数是以long类型的标准的4个字节存储(存储在前面的为数据的低位,如:存储数据为03 02 01 00,实际是 &H00010203)的话,只需要把读入数的类型定义为long类型,循环的结束条件设为 lfile/4就可以了。
如果存储的数不是以long类型的标准存储的话,那就要用到CopyMemory。
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, source As Any, ByVal Length As Long)
Private Sub Command1_Click()
Dim b() As Byte, fName As String, lfile As Long, i As Long, j As Integer
Dim b1(0 To 3) As Byte, lngTMP As Long
On Error Resume Next
fName = "c:\BOOTSECT.DOS"
lfile = FileLen(fName)
ReDim b(1 To lfile)
Open fName For Binary As 1#
Get #1, , b
Close
For i = 1 To lfile / 4
For j = 0 To 3
b1(j) = b(i + 3 - j)
Debug.Print Hex(b1(j)); " ";
Next j
CopyMemory lngTMP, b1(0), 4
Debug.Print , lngTMP
Next i
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
借助calling_1的代码:
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 Command1_Click() '获得Long数据的4个Byte值
Dim i As Integer
Dim a As Long
a = Val(Text1)
CopyMemory Buffer(0), a, 4
For i = 0 To 3
Print Buffer(i)
Next
End Sub
Private Sub Command2_Click()
Dim l_byte(0 To 3) As Byte '要被转化的Byte()
Dim l_long As Long '要保存转化的Long
l_byte(0) = Buffer(3)
l_byte(1) = Buffer(2)
l_byte(2) = Buffer(1)
l_byte(3) = Buffer(0)
l_long = "&H" & (CStr(Hex(l_byte(0))) & CStr(Hex(l_byte(1)))) & CStr(Hex(l_byte(2))) & CStr(Hex(l_byte(3)))
Text2 = l_long
End Sub
Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub
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 Command1_Click() '获得Long数据的4个Byte值
Dim i As Integer
Dim a As Long
a = Val(Text1)
CopyMemory Buffer(0), a, 4
For i = 0 To 3
Print Buffer(i)
Next
End Sub
Private Sub Command2_Click()
Dim l_byte(0 To 3) As Byte '要被转化的Byte()
Dim l_long As Long '要保存转化的Long
l_byte(0) = Buffer(3)
l_byte(1) = Buffer(2)
l_byte(2) = Buffer(1)
l_byte(3) = Buffer(0)
l_long = "&H" & (CStr(Hex(l_byte(0))) & CStr(Hex(l_byte(1)))) & CStr(Hex(l_byte(2))) & CStr(Hex(l_byte(3)))
Text2 = l_long
End Sub
Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询