У меня есть ряд шестнадцатеричных значений, которые мне нужно преобразовать в int из формата intel Hex
.
Однако эти значения находятся в одной строке, не имеют разделителя и отличаются по длине.
Пример строки: :A40425B6
, которая представляет 3 типа int: A4, 0425
и B6
.
В C
существует простой способ сделать это (после удаления :
):
sscanf(line.toLocal8Bit().constData(), "%2x%4x%2x", &byteCount, &address, &recordType);
Конечно, можно было бы просто разделить строку разделителями и затем преобразовать ее следующим образом:
byteCount = Convert.ToInt32(line.Substring(1, 2), 16);
address = Convert.ToUInt32(line.Substring(3, 4), 16);
recordType = Convert.ToUInt32(line.Substring(7, 2), 16);
Однако, есть более чистый способсделать это похоже на C?