请教溢出问题,谢谢
时间: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
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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28