再也不用小心翼翼的实验各种数据类型转换的API看看是否能达到自己想要的效果。只需强制类型转换与位运算结合,各种数据类型转换就能很轻松的实现。 抛砖引玉一下。 #include "Windows.h" / //sld 字符串转换为指针值 / void atop(char* src, void** pp) { DWORD dwTemp = 0; for(int i=0;i<4;i++) { dwTemp += src[i]<<8*(3-i); } *pp = (void*)(DWORD)(dwTemp); } /// //sld DWORD 转换为 字符串 /// void dtoa(DWORD src, char* dest) { for(int i=0;i<sizeof(DWORD);i++) { dest[i] = src&0xff; src = src>>8; } dest[sizeof(DWORD)] = '/0'; } / //sld 字符串 转换为 DWORD / void atod(char* src, DWORD& dest) { dest = 0; for(int i=0;i<sizeof(DWORD);i++) { dest+= src[i]<<i*8; } } /// //sld DWORD 转换为 指针 /// void dtop(DWORD src, void** pp) { *pp = &src; } / //sld 指针转换为字符串 / void ptoa(void* p, char* dest) { for(int i=0;i<4;i++) { dest[i] = (((DWORD)(p)) & (0x000000ff<<(3-i)*8))>>(3-i)*8; } } void main() { //DWORD 转换为 字符串 DWORD dwCRC32 = 0x12345678; char szCRC[4]; dtoa(dwCRC32, szCRC); //字符串转换为指针值 char sz[4] = {0x11, 0x22, 0x33, 0x44}; void* p = NULL; atop(sz, &p); //指针 转换为 字符串 char szDst[4]; ptoa(p, szDst); //DWORD 转换为 字符串 DWORD dwDeviceID = 6; char szDeviceID[32]; dtoa(dwDeviceID, szDeviceID); //字符串 转换为 DWORD DWORD dwD = 0; atod(szDeviceID, dwD); _asm{ NOP } }