По сути, у меня есть файл, который содержит несколько строк, которые я должен проанализировать.Например, у меня может быть что-то в форме: «Гомер Симпсон съел @ 0x000000000000BEEF пончики»
Восстановить имя просто, оно восстанавливает количество пончиков, которые он съел, с которыми у меня проблемы.Другими словами, я хотел бы сохранить это число в переменной uint64_t.
Мой первый подход состоял в том, чтобы просто прочитать число от символа к символу и преобразовать его в десятичное число (т. Е. Я бы вычислил 0 * 16 ^15 + 0 * 16 ^ 14 + ... + E * 16 ^ 1 + F * 16 ^ 0).Этот метод кажется мне очень дорогостоящим, и я уверен, что должен быть лучший способ добиться этого.Однако этот метод имел то преимущество, что если бы число было написано так: «@ 0x0000 0000 0000 BEEF», я все равно смог бы преобразовать его в переменную uint64_t.
Второй метод, который я попробовал, заключался в использованииsscanf или strol (как описано во многих других сообщениях, таких как этот: Преобразовать шестнадцатеричную строку (char []) в int? ).Проблема с этим методом заключается в том, что мне сначала нужно создать подстроку "@ 0x000000000000BEEF" из исходной строки (то же самое относится и к прогулке).Опять же, эта техника работает, но она не сработает, если у меня будет "@ 0x0000 0000 0000 BEEF.
Есть ли для меня умный и простой способ восстановить это число и сохранить его в переменной uint64_t?
Этот вопрос не такой, как в других постах. Все, что им нужно сделать, чтобы преобразовать шестнадцатеричную строку в uint64_t. Мой вопрос другой.
У меня есть строка, которая не простосоставленный из шестнадцатеричного значения, формат шестнадцатеричного значения может изменяться от строки к строке и может содержать слова, разделенные пробелами. Например, у меня может быть:
"Bart annoyed @00000000000000AA people today"
Или шестнадцатеричное значение может быть записанокак это:
"Bart annoyed @0000 0000 0000 00AA people today"
Как мне прочитать каждую строку в форме шестнадцатеричного числа в виде строки, которую затем можно преобразовать, как показано в других ответах?