社区
机器视觉
帖子详情
神秘的两个字节!
nickHu
2002-12-14 01:57:11
书上说256色bmp文件的头1078字节是文件信息,那么再加上640*480=307200,一共应该是308278字节呀,为什么我看到的都是308280字节?(在画图中看属性得到)
那两个字节哪里来的?
谢谢,急!
...全文
46
12
打赏
收藏
神秘的两个字节!
书上说256色bmp文件的头1078字节是文件信息,那么再加上640*480=307200,一共应该是308278字节呀,为什么我看到的都是308280字节?(在画图中看属性得到) 那两个字节哪里来的? 谢谢,急!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caitou123
2002-12-19
打赏
举报
回复
zzwu(未名):
多谢指点
zzwu
2002-12-19
打赏
举报
回复
caitou123(自向红尘取烦恼) :
1. 为什么bmp文件的头是1078字节?
bmp文件的头由2部分组成,一部分是用来描述图像的长,宽,色彩位数,是否压缩,等等图像属性的信息,共用了54个字节;另外的1024(=256*4)个字节用来存放CLUT(色彩查找表,即调色板)的信息,所以总共是1078字节.
这是指256色bmp图像文件的文件头的组成情况,其他颜色数的图像文件不是这样.
2. "1078字节输出是14"?
你理解错了,1078是图像数据在bmp图像文件中的起始位置(所谓偏移,offset),这个offset值存放在bmp文件的11-14四个字节处. 而不是1078字节的输出是14。
chenm001
2002-12-18
打赏
举报
回复
BMP的图象数据必须是按4字节对齐的,所以会多出2字节(不对齐时你可以试一下,就会发现:有兼容性的问题!)
caitou123
2002-12-18
打赏
举报
回复
HANDLE handle = CreateFile("d:\\wode.bmp,GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if ( handle == INVALID_HANDLE_VALUE )
AfxMessageBox("handle false");
BITMAPFILEHEADER bmFH;
DWORD dwRead = 0;
ReadFile(handle, & bmFH, sizeof(bmFH), & dwRead, NULL);
TRACE("======%d======%d=====",dwRead,bmFH.bfSize);
---------------------------------------------------------
输出:14======308278======
为什么bmp文件的头是1078字节?输出是14啊。
zzwu
2002-12-18
打赏
举报
回复
BldStu(lyd),chenm001(CM):
假如8位的bmp图像大小为0*0,问文件的大小是1078,还是1080?
duwenyong
2002-12-17
打赏
举报
回复
我试了好几个怎么都是308278呀?你发一个给我看看,swenyong@etang.com
zzwu
2002-12-16
打赏
举报
回复
字节数取4的整数倍是对的,但通常是说扫描线的长度是4的整数倍.而不是文件长为4的整数倍.
我看到的是,在1078个字节后,紧根的就是图像数据了.因1078非4的整数倍,所以,1078+4n也不需要是4的整数倍.
zzwu
2002-12-16
打赏
举报
回复
问题问的好!
zzwu
2002-12-16
打赏
举报
回复
BldStu(lyd) :
为什么308280=int((308278+3)/4)中要加一个 3 ?
我原来猜想是文件结尾标志26(ctrl-z),但用debug看了一下,结尾不是26,而是00 00.
xiepengtao
2002-12-15
打赏
举报
回复
BldStu(lyd) ,是否是想当然。。
随便一个文件,一个字节,两个字节,都可以准确识别,不会取4的倍数。
具体的图象文件中,很多都是最后单字节的。。
BldStu
2002-12-15
打赏
举报
回复
308280=int((308278+3)/4)
因为32位带宽,所以字节数取4的整数倍
otuotu
2002-12-15
打赏
举报
回复
恩就是这样地,看看sizeof(BITMAOINFOHEADER)是多少吧,好像我用纯C++写的就会比实际应该的大2字节,数据结构定义是一样的。
C数据类型-中文为什么
两个
字节
ASCII码:一个英文字母(不分大小写)占一个
字节
的空间,一个中文汉字占
两个
字节
的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值-128,最大值127。如一个ASCII码就是一个
字节
。 1,为什么英文一个
字节
,汉字
两个
字节
? 一个
字节
是8位,0-127,只能表示128个字符,用来表示英文26个字母足够了,但是用来表示汉字却差...
Java 为什么占
两个
字节
的char
Java 为什么占
两个
字节
的char Java语言内部存储采用的是Unicode编码,Unicode编码中的每个字符占
两个
字节
,中文也是占
两个
字节
,所以,Java中的字符可以存储一个中文汉字。 1、而在不同的编码方式中,中文所占的
字节
数是不同的: ① ASCII码中,一个英文字母(不分大小写)占一个
字节
的空间,一个中文汉字占
两个
字节
的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。 ② UTF-8编码中,一个英文字符等于一个
字节
,一个中文(
两个
字节
合并成一个字
(1)今天在写程序的时候,无意间发现了一个问题。
两个
字节
合并成一个字,怎么运算。我是采用的以下方式:高
字节
UA,低
字节
UB,则合并结果是:UA int main(int argc, char* argv[]) { unsigned char ua = 0x66,ub = 0x77; printf("data is 0x%x /n", (ua&0x03)
设相对寻址的转移指令占
两个
字节
,第一
字节
是操作码,第二
字节
是相对位移量(用补码表示),若CPU每当从存储器取出一个
字节
时,即自动完成(PC)+1一PC
(PC)+ 相对位移 =有效地址 低
字节
地址为字地址:低位
字节
在低地址 例:FFDFH这个十六进制数中,FF为高位
字节
,DF为低位
字节
1.设相对寻址的转移指令占
两个
字节
,第一
字节
是操作码,第二
字节
是相对位移量(用补码表示),若CPU每当从存储器取出一个
字节
时,即自动完成(PC)+1一PC。 设当前PC的内容为2009H,要求转移到2000H地址,则该转移指令第二个
字节
的内容应为( A )。 A.F5H 1111 0101 B.F7H 1111 0111 C 08H 0000 1000 D.0
16进制几个字符是一个
字节
问 16进制 6e69 占用几个
字节
16进制中,
两个
字符是一个
字节
,一个字符的话,是一个
字节
。 例如:A是一个
字节
,AA是一个
字节
,AAA是
两个
字节
,AAAA是
两个
字节
。 不过,16进制能够出现的字符(不区分大小写)是:1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F 6e69 占用
两个
字节
ch.pipeline().addLast...
机器视觉
4,445
社区成员
15,335
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章