该如何从一串连续的二进制数据中取出其中的几个字节? 请告诉我,谢谢!

dengnia 2002-05-08 06:20:25
我现在所取出的数据是用MSCOMM控件,因其返回的是一串二进制数,所以要用到数组.
Public Function incode(bb As Variant)
Dim Arr() As Byte
Dim d As Long
Dim e As Long
MSComm1.InputMode = comInputModeBinary
Do Until MSComm1.InBufferCount < 11
DoEvents
Loop
Arr = bb 'bb 为所取回的数据
d = Hex$(Arr(4))
e = Hex$(Arr(5))
incode = (Val("&H" & (str(d) + str(e)))) / 100
End Function
程序运行后 怎么会出现下标越界?
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyu1221 2002-05-09
  • 打赏
  • 举报
回复
把以下代码放在文件的头部
private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

IsMe 2002-05-09
  • 打赏
  • 举报
回复
dim B1()as byte
dim B2()as byte
B1="sjdfsajfasjfas"
B2=midb(b1,2,4)
dengnia 2002-05-09
  • 打赏
  • 举报
回复
我写的程序如下:Public Function incode(bb() As Byte)
Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Dim w As Integer

'设定 InputMode 读取二进制数据
MSComm1.InputMode = comInputModeBinary


'等待直到输入缓冲区有 11 个字节
Do Until MSComm1.InBufferCount < 11
DoEvents
Loop

'往缓冲区存二进制数据
'Buffer = MSComm1.Input
CopyMemory w, bb(4), 2
incode = w / 100
Text2.Text = incode
End Function
为什么会出现"在END SUB ,END FUNCTION,END 属性后面只能出现注释语句?

dengnia 2002-05-09
  • 打赏
  • 举报
回复
请问上边的语句是放在哪个文件的头部?
jyu1221 2002-05-08
  • 打赏
  • 举报
回复
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

dim w as integer
CopyMemory w,bb(4),2
incode = w /100
eaglezhao 2002-05-08
  • 打赏
  • 举报
回复
你为什么要这样做呢?你可以直接用字节书组去取,或者
arr()=strconv(bb,vbfromunicode),但是可能会丢失数据,所以还要在某些方面加以控制,如果想了解更清楚,QQ:9499354

7,763

社区成员

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

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