笔试中的算法题

27 篇文章 0 订阅
7 篇文章 0 订阅
#include <string.h>
#include <stdlib.h>


//parameter:nSourceColor-32bitsRGB Color to convert
//Returns:The Converted color as a 16 Bits RGB Color
unsigned short ConvertRGB888toRGB565(unsigned int nSourceColor)
{
	unsigned short nReturn = 0;
	unsigned int nRed = nSourceColor & 0x00F80000 >> 8;
	unsigned int nGreen = nSourceColor & 0x0000FC00 >>5;
	unsigned int nBlue = nSourceColor & 0x000000F8 >>3;
	nReturn = nRed | nGreen | nBlue;
	return nReturn;
}

//实现压缩函数
//压缩一个只包含字母的字符串,它将一段连续相同的字母转换成重复次数然后紧跟这个字母
//例如
void Compress( char* pBuffer,int nBufLen,const char* pText)
{
	while ( *pText != '\0')
	{
		char* pTemp = (char*)pText;
		char cTemp = *pText;
		pTemp ++;
		int i = 1;
		if ( cTemp != *pTemp)
		{
			*pBuffer = cTemp;
			pBuffer ++;
			pText ++;
		}
		else
		{
			while( cTemp == *pTemp)
			{
				i ++;
				pTemp ++;
			}
			char pCount[20];
			_itoa(i,pCount,10);
			strcpy(pBuffer,pCount);
			pBuffer +=strlen(pCount);
			*pBuffer = *pText;
			pBuffer ++;
			pText = pTemp;
		}
	}
	*pBuffer = '\0';
}

int main()
{
	char* pText = "AAAAAAAAAABBBBCCCCCDDE";
	char cTest[100];
	Compress(cTest,strlen(pText),pText);
	unsigned int nTest = 0x00FFFFFF;
	ConvertRGB888toRGB565(nTest);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值