Вызов
Создайте консольную программу для отображения каждого байта файла.
выигрыш
Поскольку это код-гольф , побеждает меньше байтов.
правила
- Программа должна быть консольным приложением , что означает, что она будет запускаться из своего рода интерпретатора командной строки;
- Каждый байт должен быть шестнадцатеричным в верхнем регистре, разделенным пробелом, и это должно быть 2 цифры; (поставьте число 0 перед ним, если оно имеет 1 цифру)
- Файл должен быть прочитан с использованием ввода-вывода или альтернативы, а не жестко закодирован;
- Путь к файлу должен быть указан как аргумент командной строки или приглашение пользователя (например, STDIN) ;
- Не бойтесь, пожалуйста ;
пример
test.txt (заканчивается LF)
Hello World!
$ ./hexdump.exe test.txt
48 65 6C 6C 6F 20 57 6F 72 6C 64 21 0A
hello.txt
текстовый файл в качестве примера в качестве входных и то , что ожидаемый результат должен быть. Например, если в немhello.txt
содержится просто словоhello
с разрывом строки, как это будет выражено в выводе? Вы группируете байты в 16-битные, 32-битные или 64-битные слова? Или каждый байт выражается в виде двузначного шестнадцатеричного числа? Допустимы ли пробелы после каждого байта в шестнадцатеричном виде или после каждого x-битного слова? Требуется ли0x
предварительное исправление для каждого байта?Ответы:
C (gcc) на * nix,
7371 байтПопробуйте онлайн! Тестирование
-2 байта благодаря Йохан дю Туа
Это зависит
O_RDONLY == 0
от того,int_one == 1
гдеint int_one; *(char*)&int_one = 1;
.источник
Рубин , 26 байт
Попробуйте онлайн!
источник
$<
вместо этого переключается на чтение из STDIN.PowerShell ,
4540 байтПопробуйте онлайн!
-5 байт благодаря маззи
источник
./.input.tio
. 40 байтов с сохраненным CRLF.Java 11,
156154 байта-2 байта благодаря @Holger .
Попробуйте онлайн , используя в
./.input.tio
качестве аргумента путь к файлу, который будет иметь заданный вход в качестве файла-содержимого.Объяснение:
источник
interface
вместоclass
?interface
корочеclass
+public
.Path.of
вместоPaths.get
public
, но ониpublic
объявлены явноprivate
.PHP ,
605954 байтаПопробуйте онлайн!
источник
?>
и сохранить 2 байта, или, если это не сработает, заменить?>
точку с запятой и сохранить 1 байт.implode(file($x))
вместоfile_get_contents($x)
(-4 байта).wordwrap()
,1
в качестве последнего параметра, на один байт короче, чемchunk_split()
.Perl 5 (
-aF//
), 23 байтаTIO
источник
APL (Dyalog Unicode) , 16 байтов
Функция анонимного молчаливого префикса. Возвращает (и неявно печатает, если значение не используется иным образом) матрицу из двух строк, где верхние 4 бита представлены в виде десятичного числа 0–15 в верхней строке, а нижние 4 бита аналогично представлены в нижней строке. То есть в матрице столько столбцов, сколько в файле байтов.
Попробуйте онлайн!
⎕MAP
сопоставить имя файла аргумента с массивом∘
с параметрами:¯1
вся длина файла83
читается как 8-битные целые числа16 16⊤
конвертировать (анти-основание) в шестнадцатеричное 2-х позиционноеисточник
H
, 72, что составляет 4 × 16¹ + 8 × 16⁰ или [4,8] ₁₆. Таким образом, первый столбец в примере читает[4,8]
.Python 3, 59 байт
-11 байтов благодаря Mostly Harmless!
-8 байт благодаря Джеймсу К Полку!
-24 байта благодаря Blue!
Попробуйте онлайн!
Это довольно просто; он открывает имя файла, заданное в качестве ввода в STDIN, читает его, преобразует каждый символ в его значение ASCII, преобразует каждое число в шестнадцатеричное, удаляет
"0x"
предшествующее шестнадцатеричным значениям в Python, дополняет значение нулем, если необходимо, затем соединяет значения вместе с пробелами.источник
'%02X'%ord(i)
вместо того, чтобы разрезать вывод гекса.upper()
import sys
, используяraw_input()
вместо этого имя файла; правила позволяют пользователю подсказывать.input()
Баш ,
3323 байта... с большой помощью:
-3 благодаря искусству работы
-4 благодаря spuck
-3 благодаря Науэлю Фуйе
Попробуйте онлайн!
Обратите внимание, что ссылка TIO выше использует ввод - мы можем записывать файлы локально, так что это показывает, что она работает как программа, использующая путь к файлу.
источник
xxd -u -p $1|fold -2|tr \\n \
.\n
и\
работать в этой версии ссылки? РЕДАКТИРОВАТЬ: я добавил еще один побег персонажа.xxd -c1 -p -u $1|tr \\n \
Котлин ,
1301271049392 байтаПопробуйте онлайн!
Изменить: -11 байт благодаря @ChrisParton
Редактировать: Рабочая TIO
Редактировать: -1 байт благодаря @KevinCruijssen
источник
File
какjava.io.File
вместо?./.input.tio
качестве аргумента путь к файлу, и он будет использовать STDIN в качестве содержимого файла. :)a:Array
, так что я думаю, что вы можете сохранить байт.Дротик ,
140134 байтаПопробуйте онлайн!
-6 байт, потому что я забыл уменьшить имена переменных
источник
Haskell,
145143 байтаисточник
import Data.ByteString
плюсmain=getArgs>>=Data.ByteString.readFile.(!!0)>>=mapM_(printf"%02X ").unpack
.Rust, 141 байт (предоставленная версия)
Ржавчина, 151 байт (оригинальная версия)
источник
bash + Stax, 6 + 4 + 1 = 11 байт
Это полная теория ремесла на данный момент. Вы не можете на самом деле запустить это. Если все работает в соответствии с его спецификацией, это будет работать, но еще не все.
Скрипт bash
и программа Stax должна быть скомпилирована и сохранена в]
Установите свой набор символов ISO 8859-1 (Windows-1252 здесь не будет работать) и перейдите
Распаковал и объяснил
источник
Emojicode ,
186162 байтаПопробуйте это онлайн здесь.
Ungolfed:
источник
Perl 6 , 45 байт
Попробуйте онлайн!
@*ARGS[0]
это первый аргумент командной строки..IO
превращает это (предполагаемое) имя файла вIO::Path
объект..slurp(:bin)
читает весь файл вBuf
буфер байтов. (Без этого:bin
содержимое файла будет возвращено в виде строки Unicode.).list
возвращает список значений байтов из буфера..fmt('%02X')
этоList
метод, который форматирует элементы списка с использованием заданной строки формата, а затем объединяет их с пробелами. (Удобный!).say
печатает эту строку.источник
.list
для 41 байтаD 98 байт
Попробуйте онлайн!
источник
Python 3, 75 байт
В основном копия ответа Максвелла на python 2.
источник
sys.argv[1]
. сsys.argv[0]
этим сценарием работает больше как квин ;-)Ракетка, 144 байта
Это представление выводит завершающий пробел, а не завершающий перевод строки. Дайте мне знать, если это считается лазейкой :)
Убрано
источник
Forth (gforth) , 71 байт
Попробуйте онлайн!
TIO имеет
3 arg
в последней строке, потому что перед передачей кода TIO передает "-e пока" анализатору командной строкиКод Объяснение
источник
Javascript, 155 байт
источник
VBScript, 143 байта
источник
Wolfram Language (Mathematica) ,
9489 байтПопробуйте онлайн!
Код довольно понятен из-за длинных имен команд. Это следует читать в основном справа налево:
источник
Гема , 45 знаков
Образец прогона:
Попробуйте онлайн!
источник
Pyth , 12 байт
Попробуйте онлайн!
Принимает ввод как приглашение пользователя (нет доступа к аргументам командной строки AFAIK).
(*) Я не уверен на 100%, если это так, но одна базовая 256 цифра (например, один символ) всегда будет конвертироваться в ровно 2 шестнадцатеричные цифры, что устраняет необходимость дополнения нулями.
источник
Node.js, 118 байт
Как выглядит результат:
Кстати, содержание
test.txt
в примере выглядит следующим образом:источник
C # .NET Framework 4.7.2 -
235213203191175140 байтПопробуйте онлайн!
источник
05AB1E , 18 байт
Попробуйте онлайн!
Объяснение:
источник