LPSTR lpStr = _T("ABCD5678");
DWORD dwResult = 0;
char *m;
m = ((char*)(&dwResult));
sprintf(m,"%s",lpStr);
//这样lpStr中的内容就存在dwResult中了
char *n;
n = ((char*)(&dwResult));
//即可取出
DWORD dwResult = 0;
char *m;
m = ((char*)(&dwResult));
sprintf(m,"%s",lpStr);
//这样lpStr中的内容就存在dwResult中了
char *n;
n = ((char*)(&dwResult));
//即可取出
by[0] = 0x78;
by[1] = 0x56;
by[2] = 0xCD;
by[3] = 0xAB;
dwResult = MAKELONG(MAKEWORD(by[0], by[1]), MAKEWORD(by[2], by[3]));
then dwResult=10*(0xFFFF>>4)+11*(0xFFFF>>8)+12*(0xFFFF>>12)+...
+7*(0xFFFF>>28)+8
then dwResult=10*(0xFFFF>>4)+11*(0xFFFF>>8)+12*(0xFFFF>>12)+...
+7*(0xFFFF>>28)+8
忘了说明了,我的lpStr是随时变化的。
你还不如写 dwResult = 0xABCD5678;
将lpStr中的字符一个一个取出来,转换成数字,如A->10,B->11...
eg:
AB--> a = 10*16+11;
CD--> b = ;
56--> c =;
78-> d = ;DWORD dwResult = MAKELONG(MAKEWORD(d, c), MAKEWORD(d, a));
存储顺序不对的。
这个过程可以用循环实现,
虽然笨了点,但肯定能实现
举例说明用MAKEWORD和MAKELONG来做而已。
举例说明用MAKEWORD和MAKELONG来做而已。
麻烦写一段吧,兄弟我没看懂。:(
最怕的就是 << 、 >> 马上就昏了。
如果成功,100分送上。
0xFFFFFFFF>>8就是2的24次方啊
依次类推,就是为了计算方便,不用调用数学函数
AB--> a = 10*16+11;
CD--> b = ;
56--> c =;
78-> d = ;DWORD dwResult = MAKELONG(MAKEWORD(a, b), MAKEWORD(c, d));这个一定行,我试过了
INT HexChToInt(CHAR chTemp);
DWORD dwResult = 0;
CHAR * pChResult = (CHAR*)(&dwResult);
CHAR * pChar = lpStr;for(int i = 0; i < 4 ; i++)
{
int m,n,nResult;
CHAR chTemp = pChar[i * 2];
m = HexChToInt(chTemp);
chTemp = pChar[i * 2 + 1];
n = HexChToInt(chTemp);
nResult = m * 16 + n ;
memcpy(pChResult + i,&nResult,sizeof(CHAR));}
INT HexChToInt(CHAR chTemp)
{
INT n;
switch(chTemp)
{
case 'A':
case 'a':
n = 10;break;
case 'B':
case 'b':
n = 11;break;
case 'C':
case 'c':
n = 12;break;
case 'D':
case 'd':
n = 13;break;
case 'E':
case 'e':
n = 14;break;
case 'F':
case 'f':
n = 15;break;
default:
n = _ttoi(&chTemp);
}
return n;
}