замена значений файла с помощью шестнадцатеричного скрипта редактирования

927
Kalamalka Kid

Мне нужна помощь для создания сценария bash, который скопирует три строки кода из файла сохранения (sav) и вставит их в другой файл сохранения. Я использовал шестнадцатеричный редактор, чтобы сделать это вручную, вставив значения с одинаковым смещением, но хотел бы иметь скрипт, который делает это автоматически.

Пример:

Исходный файл имеет эти значения при просмотре в HEX-редакторе.

  1. 00001E40 - AC 59 D2 01 00 DC AB 8B
  2. 00001E50 - DC 54 D2 01 D0 FE 1A 00
  3. 000FFA90 - 4C 00 00 00 01 14 02 00

Я хочу скопировать и вставить эти значения с тем же смещением в новый файл.

Я не программист и не слишком разбираюсь в скриптах, но хочу знать, возможно ли это сделать?

1
«из шестнадцатеричного файла» - нет шестнадцатеричных файлов, шестнадцатеричные редакторы показывают содержимое любого файла в шестнадцатеричном формате, ваш вопрос сейчас неясен. Пожалуйста, опишите немного более подробно, что вам нужно сделать. Также обратите внимание, что это не бесплатная служба написания кода. Вопросы, касающиеся целых программ, вероятно, будут закрыты как слишком широкие. Máté Juhász 7 лет назад 1
хорошо, отредактировал спасибо. Как вы думаете, запрос теперь более понятен? Kalamalka Kid 7 лет назад 1
Это довольно элементарное программирование с четкой целью. ИМО, это идеальное время для вас учиться. Вам нужно открыть файл для двоичного доступа, прочитать и сохранить 24 байта, закрыть файл; откройте второй (2) файл и третий (3-новый) файл для двоичного доступа, прочитайте байт из (2), запишите байт в (3) до смещения, затем запишите сохраненные 24 байта в (3), затем передвинуть 24 байта в (2) и затем прочитать и записать до конца маркера файла для (2); закройте 2 и 3. Так что гуглите "Bash бинарное открытие и чтение файла цикла". Если у вас есть что-то, вы можете обратиться за помощью с проблемами Yorik 7 лет назад 1
Обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кодов. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 7 лет назад 0
@Yorik спасибо .. пожалуйста, скажите мне, однако, третья строка данных (000FFA90) находится в конце файла, в то время как первые две (00001E40 и 00001E50) расположены в середине. Принимает ли это во внимание процесс, который вы написали? Kalamalka Kid 7 лет назад 0
Нет. Так что вам нужно изменить ваш процесс. Но первым шагом является «определить, как вы идентифицируете» информацию: это фиксированное местоположение (точно последние 8 байт), это уникальная серия? и т.д. Есть такая вещь, как «Отладка резиновой утки», которая также полезна при планировании процесса: объясните, что вы делаете с резиновой уткой. Затем запишите этот план, затем закодируйте его, используя язык программирования. Просто имейте в виду, что компьютеры - самые педантичные люди, которых вы знаете, поэтому вам нужно быть очень конкретным. Yorik 7 лет назад 1
Если они всегда являются фиксированными местоположениями во всех файлах, то «000FFA90» является точным местоположением, поэтому обычно вы можете выполнить чтение с определенного смещения. Это будет намного быстрее и проще, чем сохранение предыдущих восьми байтов, которые вы прочитали, и сравнение их с определенной последовательностью байтов. Yorik 7 лет назад 1

0 ответов на вопрос

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