У меня есть строка, для которой я вычислить sha1 переваривать так:Сравнить часть sha1 переваривать с шестнадцатеричной строки в C
SHA1(sn, snLength, sha1Bin);
Если я правильно это приводит к 20 байт полукокса (с двоичными данными). Я хочу сравнить последние 3 байта этого символа с другим символом. Этот символ содержит строку «6451E6». 64, 51 & E6 - шестнадцатеричные значения. Как преобразовать «6451E6», так что я могу сравнить его с помощью:
if(memcmp(&sha1Bin[(20 - 3)], theVarWithHexValues, 3) == 0)
{
}
У меня есть эта функция:
/*
* convert hexadecimal ssid string to binary
* return 0 on error or binary length of string
*
*/
u32 str2ssid(u8 ssid[],u8 *str) {
u8 *p,*q = ssid;
u32 len = strlen(str);
if((len % 2) || (len > MAX_SSID_OCTETS))
return(0);
for(p = str;(*p = toupper(*p)) && (strchr(hexTable,*p)) != 0;) {
if(--len % 2) {
*q = ((u8*)strchr(hexTable,*p++) - hexTable);
*q <<= 4;
} else {
*q++ |= ((u8*)strchr(hexTable,*p++) - hexTable);
}
}
return((len) ? 0 : (p - str)/2);
}
, который делает то же самое, но я новичок в C и не понимаю, это :-(
Это `char *`, а не `char`. – 2010-12-07 21:21:40