1 votes

Commande ou script pour lire un fichier binaire et sauter quelques octets tous les X octets

J'essaie de trouver une commande shell Android qui est capable de lire un fichier mais qui a le pouvoir de sauter, par exemple 512 octets tous les 1024 octets.

Une telle commande existe-t-elle et est-elle disponible pour les appareils Android ?

J'ai examiné dd mais je n'ai pas réussi à savoir s'il était possible d'utiliser dd à cette fin. Vous pouvez faire en sorte que dd saute des octets au début du fichier, vous pouvez lui faire lire X octets d'un fichier, mais je ne vois pas comment obtenir la fonctionnalité que j'ai décrite.

EDITAR:

Dans mon cas, la commande/le script doit sortir sur stdout, et le traitement lira la sortie comme un flux, c'est-à-dire qu'il devra no soit quelque chose comme "cat a file, do processing, cat a file". C'est comme "while true ; do cat a file ; done | processing".

La liste des commandes disponibles se trouve ici : http://www.busybox.net/downloads/BusyBox.html

2voto

Aleris Points 4674

Vous devriez essayer d'utiliser ce script bash que j'ai écrit pour vous (nécessite busybox sur votre Android) :

placez le script dans un fichier appelé script.bash (changez avec votre propre chemin) :

#!/system/xbin/bash
# sputnick 20120928 http://android.stackexchange.com/posts/30069

binfile=<THE PATH OF YOUR BIN FILE>
bytes=$(wc -c < $binfile)
c=0 count=0

while ((count < bytes - (1024+512) )); do
    dd 2>/dev/null if=$binfile bs=512 count=2 skip=$c
    printf '\n\n'
    ((count += 1024+512 ))
    ((c+=3))
done

Maintenant, dans un terminal sur votre ordinateur (ceci est pour linux, adaptez-le si vous utilisez Windows)

adb push script.bash /mnt/sdcard/script.bash
adb shell
bash
chmod +x /mnt/sdcard/script.bash
/mnt/sdcard/script.bash

éditer

Voici ce que fait le script in-fine :

dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=0
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=3
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=6
dd 2>/dev/null if=/tmp/bin bs=512 count=2 skip=9
(...)

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X