10位的数据怎么能提取出8位呢???

bbcock 2009-05-12 08:14:15
我有一个文件,800个字节。根据文件说明,其中数据都是按10位存放的,我想用位图把数据显示出来,也就是10位数据我想取出8位,生成1个新的文件(800*8/10*8=5120字节),怎么做速度最快呢?
...全文
211 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seamour 2009-05-13
  • 打赏
  • 举报
回复
接下来,怎么分布的呢?比如头2个字节B1和B2(每个都是7:0共8bits),转换到b1和b2中,16bits中应该有12-14bits的信息,现在可能性就多了:
1.1 B1[7:0]->b1[7:0], B2[5:0]->b2[5:0]
1.2 B1[7:0]->b1[7:0], B2[7:2]->b2[7:2]
1.3 B1[7:0]->b1[7:0], B2[5:0]->b2[7:2]
1.4 B1[7:0]->b1[7:0], B2[7:2]->b2[5:0]
2.1 B1[5:0]->b1[5:0], B2[7:6]->b1[7:6], B2[3:0]->b2[3:0]
2.2 ...
2.x ...
3.1 B1[7:2]->b1[7:2], B2[1:0]->b1[7:6], B2[7:4]->b2[3:0]
3.2 ...
3.x ...
这里可能性太多了,谁也没法直接猜出来你想要哪种啊?

另外,处理的时候还是一样用shl/shr,一次把5bytes转成4bytes比较正常。如果不是比较bt的编码方式,同时也是在little-endian机器上编码的,可以一次读入4bytes,处理了第一个之后再读入1byte,统一操作速度会比较快一些
magicjove 2009-05-13
  • 打赏
  • 举报
回复

自己写定常字符串截取算法,循环或者递归处理,处理后生成新文件显示
Seamour 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 bbcock 的帖子:]
我有一个文件,800个字节。根据文件说明,其中数据都是按10位存放的,我想用位图把数据显示出来,也就是10位数据我想取出8位,生成1个新的文件(800*8/10*8=5120字节),怎么做速度最快呢?
[/Quote]
我觉得你还是先搞清楚自己想干嘛吧,看了半天你这800字节是怎么变成5120字节的,每8bytes存储10bits?
雄牛 2009-05-13
  • 打赏
  • 举报
回复


路过~~~~
友情UP
bbcock 2009-05-13
  • 打赏
  • 举报
回复
因为位图显示是按8位的,数据是10位的,多出来的那些字节信息就不要了。相当于每10bit数据提出其中的8bit,2bit不要
Seamour 2009-05-13
  • 打赏
  • 举报
回复
那剩下的160字节信息哪去了?
bbcock 2009-05-13
  • 打赏
  • 举报
回复
to all:

不好意思,写错了,应该是:(800*8/10=640字节)


按字节我会,按位我就不会了。感觉应该用shr,shl这类的运算符。
windindance 2009-05-13
  • 打赏
  • 举报
回复
位操作没有很好的办法,自己写函数处理吧。
如果真的需要高速,可以试着用嵌入汇编。
sparklerl 2009-05-12
  • 打赏
  • 举报
回复
医学图像?

全部转成2进制再取?

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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