#c
#c
Вопрос:
Спасибо за помощь, но, возможно, мне следует прояснить мою проблему. Например, я хочу прочитать некоторые адреса из текстового файла:
someFile:: 0xc4fap4424ab1 0xac8374ce93ac … и т. д
Теперь я хочу взять эти адреса и преобразовать их в десятичные, чтобы я мог сравнивать адреса. Итак, мой вопрос: 1. Как мне сохранить эти адреса 2. После того, как я сохранил адреса, как я могу преобразовать их в десятичные.
Комментарии:
1. Это даже не компилируется. Что вы на самом деле пытаетесь сделать?
2. Это должно быть:
"0xfffffffffff0"
?3. когда ‘p’ стало шестнадцатеричной цифрой?
4. Извините за опечатку, в любом случае просто предположим, что это правильное шестнадцатеричное число.
Ответ №1:
Ваш инициализатор объявляет только один элемент для temp
массива, и это значение намного превышает возможности a char
. Максимальное значение, которое вы можете сохранить в одном char
, равно 0xFF
.
Если temp
бы было что-то в виде:
char temp[] = {0x12, 0x34, 0x56, 0x78};
Затем вы могли бы немного изменить бит, чтобы получить int
из 4 байтов. На самом деле я бы использовал uint32_t
, чтобы быть независимым от платформы:
uint32_t x = (temp[0] << 24) | (temp[1] << 16) | (temp[2] << 8) | temp[3];
Конечно, вы также должны позаботиться о порядке следования.
Комментарии:
1. Спасибо за помощь, но, возможно, мне следует прояснить мою проблему. Я хочу прочитать некоторые адреса из текстового файла, например: someFile:: 0xc4fap4424ab1 0xac8374ce93ac … и т. д