void MD5Builder::addHexString(const char * data){ uint16_t i, len = strlen(data); uint8_t * tmp = (uint8_t*)malloc(len/2); if(tmp == NULL) return; for(i=0; i<len; i+=2) tmp[i/2] = (hex_char_to_byte(data[i]) & 0x0F) << 4 | (hex_char_to_byte(data[i+1]) & 0x0F); add(tmp, len/2); free(tmp); }
BOOL parse_ndas_device_id(NDAS_DEVICE_ID& deviceID, LPCTSTR lpszHexString) { NDAS_DEVICE_ID id = {0}; LPCTSTR p = lpszHexString; for (DWORD i = 0; i < 6; ++i) { if (_T('\0') == *p ) { return FALSE; } BYTE low = 0, high = 0; BOOL fSuccess = hex_char_to_byte(*p++, high) && hex_char_to_byte(*p++, low); if (!fSuccess) { return FALSE; } // delimiter if (_T('-') == *p || _T(':') == *p) { ++p; } id.Node[i] = (high << 4) + low; } if (_T('\0') != *p) return FALSE; #ifdef _DEBUG _tprintf(_T("%02X:%02X:%02X:%02X:%02X:%02X\n"), id.Node[0], id.Node[1], id.Node[2], id.Node[3], id.Node[4], id.Node[5]); #endif deviceID = id; return TRUE; }