Копировать содержимое двоичного файла в виде шестнадцатеричных символов

1113
AllSolutions

Я хочу скопировать содержимое двоичного файла в виде шестнадцатеричных символов.

Плагин Notepad ++ ASCII в Hex не работает, потому что символы не являются ASCII.

В TextPad 5.3 шестнадцатеричный режим не имеет никакой опции копирования.

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

0

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

1
barlop

в качестве примера рассмотрим гекс для «двоичного файла», то есть исполняемого файла, c: \ windows \ system32 \ calc.exe (калькулятор windows)

C:\>xxd -p c:\windows\system32\calc.exe >c:\crp\a.a 

и вот шестнадцатеричный calc.exe, в WordPad

enter image description here

А что касается того, где вы можете получить xxd, ну, как я уже упоминал в своем ответе здесь (который отвечает на слегка связанный, но другой вопрос) Преобразовать шестнадцатеричный дамп файла в двоичный (программный) файл в Windows? xxd поставляется с vim7 для Windows, поэтому вы можете скопировать его оттуда. Или вы можете получить его от Cygwin

Это работает, но кажется, что это имеет фиксированное нет. символов в строке и вставляет искусственные символы новой строки. Я хочу необработанный гекс без какой-либо обертки или фиксированной ширины линии AllSolutions 7 лет назад 0
@AllSolutions `xxd -p blah.exe | tr -d '\ r \ n'> c: \ crp \ aa` (удалит любой символ \ r и каждый символ \ n). Вы можете получить tr с gnuwin32 или cygwin (и cygwin лучше, чем gnuwin32 с точки зрения наличия более поздних версий) barlop 7 лет назад 0
Но что в файле есть действительный символ \ r \ n, который я не хочу удалять? AllSolutions 7 лет назад 0
@AllSolutions. Вы имеете в виду, что если в двоичном файле есть \ r \ n - вы их не удалите. Удаление происходит после его гексагона. И если в шестнадцатеричном файле есть \ r \ n, вы действительно хотите удалить это. Помните, мы берем двоичный файл (который может иметь \ r \ n (это два соседних байта), что может означать некоторые данные или некоторые инструкции), и мы затем преобразуем этот файл в шестнадцатеричный, так что любой \ r \ n в двоичном файле не будет новой строкой и будет преобразован в 0d0a. Любые новые строки в шестнадцатеричном файле будут действительными \ r \ n фактическая новая строка, так что если вы удалите какой-либо \ r \ n из шестнадцатеричного файла, это не принесет никакого вреда barlop 7 лет назад 0
также и примечание .. tr -d '\ r \ n' технически удалит также любой стиль Unix \ ns .. это будет так же, как tr -d '\ n \ r' ', потому что он удаляет каждый \ n и всегда (и снова удалить эти \ n или \ r или, конечно же, \ r \ n, это нормально .., потому что двоичный файл преобразуется в шестнадцатеричный файл, сохраненный как unicode / ascii) barlop 7 лет назад 0
также для вас, чтобы сказать: «Но что в файле есть действительный символ \ r \ n?» Вам действительно нужно посмотреть, что есть \ r, что есть \ n, что такое \ r \ n, а также подумать более подробно о том, что такое символ и что вы на самом деле имеете в виду, когда произносите символ в файле. Это такой нетехнический язык. А также, что вас интересует в этом? barlop 7 лет назад 0
Я не хочу удалять любые символы в исходном файле. И шестнадцатеричный дамп не должен вставлять свои собственные символы новой строки для форматирования. Что в этом нетехнического? AllSolutions 7 лет назад 0
@AllSolutions Я действительно не думаю, что вы понимаете, о чем я говорю, и, кстати, ничего не удаляется из исходного файла, и что касается шестнадцатеричного дампа, не идеально, чтобы шестнадцатеричный дамп вставлял символы новой строки в шестнадцатеричный дамп, но я удаляю их из шестнадцатеричного дампа, так что это не имеет значения. barlop 7 лет назад 0