Как преобразовать одну строку Шестнадцатеричных чисел в многострочную таблицу Excel?

Я в настоящее время в некоторых шестнадцатеричных строках в файлах данных видеоигры. Структура:

XX 01 YY YY (then repeats)

Где:

XX is the item's cost
01 is unknown (it won't matter)
YY YY is the item's ID.

Например:

28 01 AF 01

... был бы описывают объект, который стоит 40 золота (который является 28 в шестнадцатеричном числе) с идентификатором "01AF" (у меня есть список ссылок для всего идентификатора/объектов в игре).

Я хочу поместить это в таблицу Excel со столбцами:

| ItemID | Cost |

Как был бы суперпользователь нападать на эту задачу, если у каждого было что-то вроде этого: alt text

1
задан 06.12.2010, 13:47

2 ответа

(РЕДАКТИРОВАНИЕ: Решение, улучшенное на основе комментария Arjan)

Вот является простой, но грязный MS решением Excel.

Предположение: Данные находятся в формате 28 01 AF 01 XX XX XX XX YY YY YY YY... (разделенное пространство)

  1. Данные копии к A1.
  2. Войдите в B1: =MID($A$1, ROW(B1)*12-11, 11). Копируйте его к B2:B20.
  3. Войдите в C1: =MID(B1,10,2)&MID(B1,7,2). Копируйте его к C2:C20.
  4. (a) Войдите в D1: =HEX2DEC(LEFT(B1,2)). Копируйте его к D2:D20.
    (b) Если #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))

(Другое предположение для решения (b): все ШЕСТНАДЦАТЕРИЧНЫЕ значения находятся в прописной букве),

Столбец C & D был бы тем, в чем Вы нуждаетесь.


Объяснение

B:B повреждает данные (A1) в различные строки.

C1 просто извлекает символы в положении {10, 11, 7, 8} от B1.

D1 извлекает первые 2 символа в A1, и затем преобразуйте его от ШЕСТНАДЦАТЕРИЧНОГО ЧИСЛА к DEC.


Примечание: Анализ дополнение ToolPak требуется для HEX2DEC() в (a). Если #NAME? ошибка появляется, это означает, что функция не поддерживается. В этом случае взлом в (b) помог бы преобразовать от ШЕСТНАДЦАТЕРИЧНОГО ЧИСЛА в DEC.

CODE() получает код ASCII символа. Для ABCDEF их коды ASCII {65,66,67,68,69,70}. CODE()-55 затем возвраты {10,11,12,13,14,15}.

1
ответ дан 17.12.2019, 00:29

Это - что-то вроде confuzzled способа сделать это, но это работает.

Скопируйте файл в MS Word.
Запустите курсор в начале файла.
Запишите макрос, который перемещает право курсора 12 мест и затем вводит разрыв строки (возврат)
Сохраните файл в текстовом формате, удостоверьтесь, что Разрывы строки включены.
Откройте файл в Excel, удостоверившись выбирать вывод в ячейках, чтобы быть текстом и не общие (или Вы будете использовать ведущий 0),

Затем просто добавьте Заголовки и удалите столбец, который Вы не хотите / потребность. Вуаля.

Возможно, кто-то с лучше знанием VB может помочь Вам здесь, синтаксис полностью отличается от C++, и я немного тороплюсь сегодня.

Код, который я имею:

(Pseudocode) - While Not End of File

    Selection.MoveRight Unit:=wdCharacter, Count:=12
    Selection.TypeParagraph
Wend
0
ответ дан 17.12.2019, 00:29

Теги

Похожие вопросы