QByteArray key = QByteArray::fromHex(QByteArray("30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 81 8D 00").replace(' ', QString()));
Быстрое объяснение:
QByteArray("30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 81 8D 00")
создает временный QByteArray с вашим ключом в виде строки
.replace(' ', QString())
удаляет все пробелы во временном QByteArray, поэтому он содержит только символы 0..F
QByteArray::fromHex()
преобразует закодированный в шестнадцатеричном формате QByteArray в QByteArray, содержащий 8-разрядные целые числа без знака (то есть тип символа C ++). Это означает, что он берет каждую пару шестнадцатеричных цифр из исходного QByteArray (например, «41») и преобразует его в целое число («41» будет преобразовано в 65 = 4 * 16 + 1) и добавляет это значение в новый QByteArray.
Если вам нужен ключ как "const char *", вы можете использовать метод QByteArray :: constData (), но вы должны помнить, что указатель, возвращаемый этим методом, действителен только до тех пор, пока действительный исходный QByteArray (цитата из документация: «пока байтовый массив не перераспределен или уничтожен»). Поэтому, если вам нужно сохранить данные ключа, сохраните их как QByteArray или сделайте копию const char *, возвращаемого constData ().