(РЕДАКТИРОВАТЬ: Решение улучшено на основе комментария Арджан)
Вот простое, но грязное решение MS Excel.
Допущение: данные представлены в формате 28 01 AF 01 XX XX XX XX YY YY YY YY...
(через пробел)
- Скопируйте данные в А1.
- Введите в B1:
=MID($A$1, ROW(B1)*12-11, 11)
. Скопируйте его в B2: B20.
- Введите в C1:
=MID(B1,10,2)&MID(B1,7,2)
. Скопируйте его в C2: C20.
- (a) Введите в D1:
=HEX2DEC(LEFT(B1,2))
. Скопируйте его в D2: D20.
(б) Если #NAME?
появилась ошибка, затем введите следующее в D1. Скопируйте его в D2: D20.
=IF(CODE(LEFT(B1,1))>64,CODE(LEFT(B1,1))-55,LEFT(B1,1))*16
+IF(CODE(MID(B1,2,1))>64,CODE(MID(B1,2,1))-55,MID(B1,2,1))
(Другое предположение для решения (б): все значения HEX указаны заглавными буквами)
Колонка C & D будет то, что вам нужно.
объяснение
B:B разбивает данные (A1) на разные строки.
C1 просто извлекает символы в позиции {10, 11, 7, 8} из B1.
D1 извлекает первые 2 символа в A1, а затем преобразует их из HEX в DEC.
Примечание: надстройка Analysis ToolPak требуется для HEX2DEC()
в (a). Если #NAME?
появляется ошибка, это означает, что функция не поддерживается. В этом случае взлом в (b) поможет конвертировать из HEX в DEC.
CODE()
получает ASCII-код символа. Для ABCDEF их коды ASCII: {65,66,67,68,69,70}. CODE()-55
затем возвращает {10,11,12,13,14,15}.