请问如何将整型转成字节数组

SaiX 2008-09-27 01:18:18
请各位帮帮忙,急
...全文
497 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2008-09-27
  • 打赏
  • 举报
回复
Long长整型数据类型包含了Byte无符号整型数据类型和Integer短整型数据类型,当然你完全可都转为4字节数组,返回时也的按4字节处理。
API函数CopyMemory可处理SINGLE及DOUBLU浮点小数,详细可参阅本人BLOGhttp://blog.csdn.net/zdingyun/archive/2008/06/09/2528026.aspx “VB的浮点数处理”一文。
SaiX 2008-09-27
  • 打赏
  • 举报
回复
谢谢zdingyun和fvflove .zdingyun的是很实用的API.
fvflove 你的那段有 点小问题,计算出来的数组倒了.
fvflove 2008-09-27
  • 打赏
  • 举报
回复
'如 Data= 256
'返回的数据是 Arr(0)=1 Arr(1)=0

'如果用16进制表示为 01*256+00 即256 的16进制是0100


'再如 Data=624
'返回的数据是 Arr(0)=2 Arr(1)=112

'如果用16进制表示为 02*256+112 即624 的16进制是0270 112的十六进制是 70

'再如 Data= 100000
'返回的数据是 Arr(0)=1 Arr(1)=134 Arr(2)=160

'如果用16进制表示为 01*256*256+134*256+160 即100000 的16进制是0186A0
zdingyun 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 SaiX 的回复:]
Integer或 Long都可以的.想把这个转成四个字节的字节数组
[/Quote]

Integer是2字节数据,16位
Long是4字节数据,32位
2者不能混淆,否则翻转时考虑不周会出错。
zdingyun 2008-09-27
  • 打赏
  • 举报
回复
如果是Integer数据类型:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command1_Click()
Dim a As Integer
Dim i As Integer
Dim ByteSj(1) As Byte
a = 15769
CopyMemory ByteSj(0), a, 2
For i = 0 To 1
Print ByteSj(i)
Next
End Sub

如果是Long数据类型:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command1_Click()
Dim a As Long
Dim i As Integer
Dim ByteSj(3) As Byte
a = -2515769
CopyMemory ByteSj(0), a, 4
For i = 0 To 3
Print ByteSj(i)
Next
End Sub
SaiX 2008-09-27
  • 打赏
  • 举报
回复
Integer或 Long都可以的.想把这个转成四个字节的字节数组
SaiX 2008-09-27
  • 打赏
  • 举报
回复
上面写错了,是想把integer或long转成四个字节的字节数组.
fvflove 2008-09-27
  • 打赏
  • 举报
回复

'就是将数据转换为16进制数.

'再每二位二位放至数组中.

Option Explicit

Private Sub Command1_Click()
Dim Data As Long
Dim HData As String
Data = 123456789
HData = ConverTenToN(Data, 16, "0123456789ABCDEF")

If Len(HData) Mod 2 = 1 Then
HData = "0" & HData
End If


Dim Arr() As Byte
ReDim Arr(1 To Len(HData) / 2) As Byte

Dim i As Long

For i = 1 To Len(HData) / 2
Arr(i) = "&H" & Mid(HData, i * 2 - 1, 2)
Next

For i = 1 To Len(HData) / 2
MsgBox Arr(i)
Next

End Sub


'*************************************
'目的:将10进制数转换为N进制数

'输入: Ten 要转换的十进制数
' N N进制数
' Chr N进制数的字符集

'返回: 成功 转换后的数据
' 失败 ""

'*************************************



Private Function ConverTenToN(ByVal Ten As Long, ByVal N As Long, ByVal Chr As String) As String
If N <= 1 Then Exit Function
If Len(Chr) < N Then Exit Function
While Ten <> 0
ConverTenToN = Mid(Chr, (Ten Mod N) + 1, 1) & ConverTenToN
Ten = Int(Ten / N)
Wend
End Function
SaiX 2008-09-27
  • 打赏
  • 举报
回复
Integer或 Long都可以的.想把这个转成四个字节
zdingyun 2008-09-27
  • 打赏
  • 举报
回复
你说的整形是Byte,Integer或 Long?

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧