[cpp] 一个快速大写字符串转换成小写字符串
li yuan
suif.liyuan at gmail.com
Fri Mar 3 12:51:54 CST 2006
/* 32-bit, little-endian. suif.liyuan */
int zbyter(unsigned int x)
{
unsigned int y;
y = (x & 0x7F7F7F7F) + 0x7F7F7F7F;
y = ~(y | x | 0x7F7F7F7F);
if (y == 0)
return 4;
else if (y & 0x0000FFFF)
return ((y >> 7) & 1) ^ 1;
else
return ((y >> 23) & 1) ^ 3;
}
int UptoLow(char* pszString)
{
char* pByte = 0;
int* pn4byte = 0;
int zPos;
pn4byte = (int*)pszString;
while (true)
{
zPos = zbyter(*pn4byte);
if (4 != zPos) break;
*pn4byte++ |= 0x20202020;
}
pByte = (char*)pn4byte;
for (int i = 0; i < zPos; ++i)
*pByte++ |= 0x20;
return 1;
}
--
一步两个脚印
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060303/618843ab/attachment.html
More information about the Cpp
mailing list