Я в настоящее время в некоторых шестнадцатеричных строках в файлах данных видеоигры. Структура:
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 |
Как был бы суперпользователь нападать на эту задачу, если у каждого было что-то вроде этого:
(РЕДАКТИРОВАНИЕ: Решение, улучшенное на основе комментария Arjan)
Вот является простой, но грязный MS решением Excel.
Предположение: Данные находятся в формате 28 01 AF 01 XX XX XX XX YY YY YY YY...
(разделенное пространство)
=MID($A$1, ROW(B1)*12-11, 11)
. Копируйте его к B2:B20.=MID(B1,10,2)&MID(B1,7,2)
. Копируйте его к C2:C20.=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))
(Другое предположение для решения (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}.
Это - что-то вроде confuzzled способа сделать это, но это работает.
Скопируйте файл в MS Word.
Запустите курсор в начале файла.
Запишите макрос, который перемещает право курсора 12 мест и затем вводит разрыв строки (возврат)
Сохраните файл в текстовом формате, удостоверьтесь, что Разрывы строки включены.
Откройте файл в Excel, удостоверившись выбирать вывод в ячейках, чтобы быть текстом и не общие (или Вы будете использовать ведущий 0),
Затем просто добавьте Заголовки и удалите столбец, который Вы не хотите / потребность. Вуаля.
Возможно, кто-то с лучше знанием VB может помочь Вам здесь, синтаксис полностью отличается от C++, и я немного тороплюсь сегодня.
Код, который я имею:
(Pseudocode) - While Not End of File
Selection.MoveRight Unit:=wdCharacter, Count:=12
Selection.TypeParagraph
Wend