memset(buf,0,64)for(int i=0;i<readBuf.Length();i++){ switch(readBuf[i]) { case 'a': buf[i+i/2] =buf[i+i/2] I (0x0a<<(i%2)*4); break; case 'b': buf[i+i/2] =buf[i+i/2] I (0x0b<<(i%2)*4); break; .......... }}如果CString =“abcd”那么转换后 buf ={0xba,0xdc};可能你想要的是0xab,0xcd,只需(0x0a<<((i+1)%2)*4);