у меня есть строка с IP-адресом:C: Синтаксический Hex строка без знака длинного
символа * input_string = "fe80000000000000022318fffeedef59";
И мне нужно, чтобы преобразовать его в беззнаковое долго:
без знака длиной L = 0xfe80000000000000022318fffeedef59;
Я попробовал несколько кодов, но ни один не работает, вот что я сделал:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char *input_string = "fe80000000000000022318fffeedef59";
printf("input_string : %s\n\n", input_string);
unsigned long l1 = strtol(input_string, NULL, 16);
printf("unsigned long l1 = strtol(input_string, NULL, 16) : l1 = %lx \n\n", l1);
unsigned long l2 = atol(input_string);
printf("unsigned long l2 = atol(input_string) : l2 = %lx \n\n", l2);
}
И выход:
input_string: fe80000000000000022318fffeedef59
без знака длиной l1 = strtol (input_string, NULL, 16): l1 = 7fffffffffffffff
без знака long l2 = atol (input_string): l2 = 0
Для хранения значения из 32-байтовой шестнадцатеричной строки вам понадобится 128-разрядная цифровая переменная. –