为什么bmp文件的数据区读出来的全是0和1???(100分)

  • 主题发起人 主题发起人 seteor
  • 开始时间 开始时间
S

seteor

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟正准备做一个生成bmp文件直方图程序,一个256级灰度的bmp文件,为什么数据区读出的全是0和1呀??????????
文件头,信息头读出来都是正确的,程序如下,运行后数组count只有count[0]和count[1]有值.(bmp文件没问题)

var
count:Array[0..255]of longint;
mybmp:File of Byte;
s:Byte;

Begin

assingfile(mybmp,'d:/aa.bmp');
reset(mybmp);
seek(mybmp,(40+14*256*4));
While NOT EOF(mybmp) do
Begin
read(mybmp,s);
count:=count+1;
End;

End;
 
var
count:Array[0..255]of longint;
mybmp:File;
si1,si2;integer;
buff:array [0..$7fff] of byte;

Begin
assingfile(mybmp,'d:/aa.bmp');
reset(mybmp,1);
seek(mybmp,(40+14*256*4));
While NOT EOF(mybmp) do Begin
blockread(mybmp,buff,sizeof(buff),si1);
for si2:=0 to si1-1 do inc(count[buff[si2]]);
end;
closefile(mybmp);
end;
 
buff:array [0..$7fff] of byte;
编译时这一句出错呀,谢谢
 
你的结果全是0,1表示你的是对的啊:)

bmp本来就是0,1这样的格式嘛
 
晕,那怎么c++读出来的就是0---255中间的数呀
全是0和1怎么做直方图呀
 
buff:array [0..$7fff] of byte;
看不出有什么错。我试了,也没报出来;
把您看到的错误信息贴出来看看,好么?
 
Invalid Compiler directive:"buff"
 
我也不明白怎么会出错
 
你改一个变量名试试,如 buff => mbuf 什么的.
 
ok了,不过读出来的数怎么会有负数呀,而且有些数都超过了总个像素点的数了[8D]
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部