[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