sswanglei 发表于 2007-2-9 16:08:00
/*------------------------------------------------------------ 函数名 : TransData(CString InStr, PUCHAR OutStr) 功 能 : 将字符串转换成十六进制数据 参 数 : CString InStr [in] 输入字符串 PUCHAR OutStr [out] 输出转换后数据的指针 返回值 : BOOL,正确返回TRUE,错误返回FALSE ------------------------------------------------------------*/ BOOL TransData(CString InStr, PUCHAR OutStr) { UINT i = 0, j = 0; UINT len = 0; UCHAR Str[KEY_LEN * 2]; len = InStr.GetLength(); if ((len % 2) != 0) { MessageBox("请按要求输入!", "错误", MB_OK | MB_ICONERROR); return FALSE; } memset(OutStr, 0, sizeof(UCHAR[KEY_LEN])); memset(Str, 0, sizeof(UCHAR[KEY_LEN * 2])); strcpy((char*)(Str), InStr.GetBuffer(0)); InStr.ReleaseBuffer(); for(i = 0; i < len; i++) { if ((Str[i] > 47) && (Str[i] < 58)) { Str[i] -= 48; } else if ((Str[i] > 64) && (Str[i] < 71)) { Str[i] -= 55; } else if ((Str[i] > 96) && (Str[i] < 103)) { Str[i] -= 87; } else { MessageBox("数据格式错误!", "错误", MB_OK | MB_ICONERROR); return FALSE; } } i = 0; while(i < len) { // 转换 Str[j] = Str[i] * 16 + Str[i + 1]; i += 2; j++; } |