Обратные байты файла
Есть ли программа или команда CMD, с помощью которой я могу просто перевернуть или перевернуть все байты файла? Например, если у меня есть текстовый файл (в качестве простого примера) с надписью "Hello, world!", Программа / команда перевернут его, чтобы сказать "! Dlrow,olleH".
Так что да, есть ли способ сделать это? Я программист и знаю, что написать свою программу для этого было бы тривиально, но я бы не стал переживать, если уже есть что-то, что может это сделать. Пакетный скрипт также будет в порядке.
2 ответа
Решение
powershell $s='Hello, world!';$s[-1..-($s.length)]-join''
файл:
способ 1:
powershell $f=[IO.File]::ReadAllBytes('.\file.txt');$t=[Text.Encoding]::ASCII.GetString($f);$t[-1..-($t.length)]-join''
способ 2:
powershell [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$s=gc .\file.txt;[Microsoft.VisualBasic.Strings]::StrReverse($s)
обратный байт:
медленный:
powershell [byte[]]$b=gc '.\file.bin' -En byte;[array]::Reverse($b);[IO.File]::WriteAllBytes('.\Reverse.bin',$b)
быстро:
powershell [byte[]]$b=[IO.File]::ReadAllBytes('.\file.bin');[array]::Reverse($b);[IO.File]::WriteAllBytes('.\Reverse.bin',$b)
«Команда CMD, с помощью которой я могу просто перевернуть или перевернуть все байты файла»:
REM set content to file
set /p="Hello, world!"> test
certutil -encodehex -f test temp 4
REM reverse file contents
set rev=
(for /f "delims=" %i in (temp) do for %j in (%i) do set rev=%j !rev!)
set /p="%rev:~0,-6%">temp
certutil -decodehex temp out.txt
Протестировано на Win 10 CMD.