LINUX.ORG.RU

Бинарник задом наперед

 ,


1

2

Хочется странного.
Есть бинарный файл.
Необходимо этот бинарник развернуть побитово.
То есть, например, было 12345, стало 54321.

Поделитесь идеями?



Последнее исправление: CYB3R (всего исправлений: 1)

man cat
man rev
man xxd

anonymous
()

Попробуй соорудить что-то из rev и hexdump.

Umberto ★☆
()

Как-нибудь так:

#!/usr/bin/env python
f1=open('filename1','rb')
f2=open('filename2','wb')
f2.write(f1.read()[::-1])
Но не уверен, что сработает :)

generator ★★★
()
Ответ на: комментарий от sdio

уж тогда сразу на С

Глупость сморозил.

anonymous
()

Новый вирус для нового антивируса решил наваять? :)

hbars ★★★★★
()

с тебя 100 грамм и пончик

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main (int argc, char *argv[])
{
  struct stat st;
  int fd;
  char *buf;
  off_t i;
  
  if (argc < 2)
    {
      printf ("Usage: %s <filename>\n", argv[0]);
      return 1;
    }
  
  if ((fd = open (argv[1], O_RDONLY)) == -1)
    {
      perror ("open");
      return 1;
    }
  
  if (fstat (fd, &st) == -1)
    {
      perror ("fstat");
      return 1;
    }

  buf = mmap (NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
  if (buf == MAP_FAILED)
    {
      perror ("mmap");
      return 1;
    }

  for (i = st.st_size - 1; i >= 0; i--)
    printf ("%c", *(buf + i));
  
  close (fd);
  
  return 0;
}
ananas ★★★★★
()

не страдай хернёй. Первый анонимус ответил прямо в точку, то что тебе и надо. Просто набери man.

anonymous
()
Ответ на: комментарий от sdio

прям бином ньютона

Ну можно и на сях сделать, конечно. Как ananas предложил. Но у меня покороче немного, не?

не доказано

Ты придираешься ;)

generator ★★★
()
Ответ на: комментарий от generator

у меня покороче немного,

на твоем месте я бы не бравировал этим

anonymous
()
Ответ на: комментарий от anonymous

так не всё сразу же! по очереди.

anonymous
()

Побитно или побайтно?

(1 байт=8 бит)

К тому же к примеру в текстовых файлах применяют не только однобайтные кодировки.

(Это к слову)

rezedent12 ☆☆☆
()
$ echo 'bla bla abla bla' | tac -r -s '.\| '

как-то так или

$ cat file | tac -r -s '.\| ' > new_file

anTaRes ★★★★
()
Ответ на: комментарий от zekka

да и вместо printf в цикле лучще write использовать, но то такое

ananas ★★★★★
()

Если в родных пакетах есть, то проще: ddrescue --reverse

anonymous
()

ну, считай его в стековую структуру, а потом вычитай обратно.

dikiy ★★☆☆☆
()

Линукс тут при чём?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.