-3
我需要從命令行掃描32位十六進制數字並將其填充到uint8_t [16]數組中,我嘗試掃描字符串並將其轉換爲十六進制,但其確實很麻煩因爲我找不到這樣做的功能,最好的辦法是什麼?掃描一個128位輸入用32個十六進制值表示
我需要從命令行掃描32位十六進制數字並將其填充到uint8_t [16]數組中,我嘗試掃描字符串並將其轉換爲十六進制,但其確實很麻煩因爲我找不到這樣做的功能,最好的辦法是什麼?掃描一個128位輸入用32個十六進制值表示
uint8_t get_int(char c)
{
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'A' && c <= 'F') return 10 + c - 'A';
if (c >= 'a' && c <= 'f') return 10 + c - 'a';
return -1;
}
int main(void)
{
char buff[33];
size_t size;
size_t i;
uint8_t *output;
fgets(buff, sizeof buff, stdin);
size = strlen(buff)/2;
output = malloc(size);
for (i= 0; i < size; ++i)
output[i] = get_int(buff[2*i]) * 16 + get_int(buff[2*i+1]);
for (i= 0; i < size; ++i)
printf("%u ", output[i]);
return 0;
}
請告訴我們你已經嘗試過什麼,它是怎麼失敗的。 – 2015-04-01 08:08:36
請從命令行顯示一個例如recveived的字符串示例。 – DrKoch 2015-04-01 08:12:42
daec3055df058e1c39e814ea76f6747e – user4228739 2015-04-01 08:13:45