+ -
当前位置:首页 → 问答吧 → 请教溢出问题,谢谢

请教溢出问题,谢谢

时间:2011-08-26

来源:互联网

我读一个二进制文件,需要从第241个字节开始读,每40个字节为一行。但我只需要这40个字节的前4个字节,每2个字节为一个数字。但溢出,溢出时I=840。是怎么回事呢。

Dim wd() As Integer, jd() As Integer
  
'读二进制文件读出经纬度,时间等
N = FreeFile
Open FILEN For Binary As #N
Num = (LOF(N) - 240) / 40
  ReDim jd(Num)
  ReDim wd(Num)
  For I = 1 To Num
  Get #N, 241 + (I - 1) * 40, wd(I)
  Get #N, , jd(I)
  Next I
Close #N

可我如果直接从(840-1)*40+241=33801读,却不会跳溢出,甚至比它大很多也不溢出

我是这样写的

dim wd as integer

open filen for binary as #1

get #1,33801,wd

get #1,,jd

close #1

作者: cguzh   发布时间: 2011-08-26

溢出多半是数据类型选错了 你把你的integer 换成 long 整数我记得最大好像是32000多 具体记不清了 你去查查

作者: zenter   发布时间: 2011-08-26

自己算算
VB code

N = FreeFile
Open FILEN For Binary As #N
Num = (LOF(N) - 240) / 40    '你的Num表示了你要读的次数(行数)
  ReDim jd(Num)              '你后面将每次读Num个字节
  ReDim wd(Num)
  For I = 1 To Num
  Get #N, 241 + (I - 1) * 40, wd(I)   '读了Num个字节
  Get #N, , jd(I)                     '再读Num个字节,加上上面的读了2*Num个字节
  Next I                              '你循环了Num次
Close #N                              '你将要读2*Num*Num个字节,2*Num*Num=Num*40+240?

作者: c_cyd2008   发布时间: 2011-08-26

热门下载

更多