一道字符串算法优化,求助

luvi88 luvi88 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
请教一下大家(32位字长的pc机环境):
#define WIDTH 320
#define HEIGHT 240
#define BYTES 3

对一个char s[WIDTH*HEIGHT*BYTES]的线性数据空间,
BYTES为最小处理单位,320*240为VIDEO的宽度和高度,也是LCD像素点个数。因为从摄像头获取到的是24位的RGB色彩,所以每3字节表示一个像素的色彩,深度为24位,现要把它转换为16位,2 字节的rgb格式(5:6:5)。

/* 包含在.h文件中的片段 */
typedef struct st_video_color_pixel_24{
unsigned char blue;
unsigned char green;
unsigned char red;
} COLOR24_T;
#define color_24to16(color) ((short)(((color.blue>>3))|((color.green>>2)<<5)|((color.red>>3)<<11)))

/* 包含在.c文件中的片段 */
unsigned short pbuf[WIDTH*HEIGHT];
COLOR24_T color;
...

for(row=0; row<HEIGHT; row++){
for(col=0; col<WIDTH; col++){
strncpy((char *)&color, (const char *)(pvideo_buf+row*WIDTH*BYTES+col*BYTES), sizeof(COLOR24_T));
pbuf[row*WIDTH+col] = (unsigned short)color_24to16(color);
}
}

按这种常规处理方案,需要处理WIDTH*HEIGHT次,对每一个BYTES字节的24位RGB色彩,转换为2字节16位的565格式的数据,这段代码效率很低,还有3字节的RGB色彩跨4字节边界问题。大家有没有好的算法,优化一下这个数据处理过程。谢了!


...全文

相关推荐

微软的一道算法优化题

根据给定的信息,本文将对一道来自微软的算法优化题目进行深入分析,主要涉及如何高效地计算出在从1到N的所有整数中数字“1”出现的总次数。

灰灰君呀

算法之字符串排序:高位优先算法深度剖析与优化策略

在算法学习的道路上,每一个新的算法都是提升编程能力的宝贵财富。我希望能和大家一同探索,共同进步。今天,我们深入探讨字符串排序中的高位优先(MSD)算法,这一算法在处理字符串数据时展现出独特的优势,理解它对于解决实际编程问题至关重要。

一杯年华@编程空间

字符串常见的算法题经典

一、字符串反转算法反转字符串是字符串处理中非常重要的一种操作。我们可以使用折半法来实现字符串反转,具体来说,就是将前后对应位置的字符互换。但是,这种方法没有考虑速度和空间的优化。

weixin_38703277

面试UC浏览器的一道处理字符串的题目(已提供答案)

通常,这样的面试题可能会包含字符串的查找、替换、分割、拼接等操作,或者是对字符串进行特定的算法处理,如正则表达式匹配、字符串排序等。

zzc0611

LZ78算法实现对任意字符串的压缩与解压

- 编码方式:编码可以是数字序列、二进制序列或其他自定义格式,关键是要确保能准确地还原原始字符串。- 位操作优化:在处理二进制字符串时,合理使用位操作可以提高代码执行速度。

qqwyuli
评论 19
收藏 已收藏
分享
返回顶部
luvi88
C语言 70,039 成员 243,237 内容