本文共 1122 字,大约阅读时间需要 3 分钟。
再也不用小心翼翼的实验各种数据类型转换的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 }}
转载地址:http://azppi.baihongyu.com/