VC中字符串位运算的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:42:04
有两个字符串,分别为:
str1="A3A3A3A3A3A3A3A3A3A3A3A3A3A3A7"
str2="A3A3A3A3A3A3A3A3A3ADA3A3A3A3AD"
字符串表示16个字节的十六进制数。
问题是:我想得到这两个字符串所代表的十六进制数进行或运算,然后,把结果存为字符串形式。该怎么编程。要详细的。谢谢!

CString str1("A3A3A3A3A3A3A3A3A3A3A3A3A3A3A7");
CString str2("A3A3A3A3A3A3A3A3A3ADA3A3A3A3AD");
int len1=str1.GetLength();
int len2=str2.GetLength();
CString str3=len1>len2 ? str1 : str2;

for (int i=0; i<(len1>len2 ? len1 : len2); ++i)
{
str3.SetAt(i, str1.GetAt(i%len1) | str2.GetAt(i%len2));
}
MessageBox(str3);

先将整搁16进制字符转为2进制字符串,这里有个技巧,每一位16进制对应一个4位的2进制,比如'A'对应'1011',分别转换接起来就可以了,然后按或运算的法则,一位一位的处理,处理完后再用刚才的方法转回去就可以了
还有个方法,你事先建立一个16进制的或运算法则表存在内存中,然后直接按那个运算表处理就好了