2009-01-08 8 views
3

Ce que je veux, c'est prendre un entier représenté comme une chaîne, par exemple "1234", et le convertir en un fichier appelé int, contenant un grand 32 bits entier endian, avec la valeur 1234.comment convertir la chaîne en fichier entier binaire en utilisant la ligne de commande sous Linux

la seule façon que je l'ai compris pour ce faire est quelque chose comme

echo 1234 | awk '{printf "0: %08X", $1}' | xxd -r > int 

qui est un peu méchant!

Est-ce que quelqu'un connaît un meilleur moyen?

+0

Ce qui est si méchant? C'est une commande qui fonctionne, utilisez-la – Pyrolistical

+0

Je préfère ce genre de choses pour ne nécessiter qu'un seul outil, comme l'exemple perl ci-dessous. –

Répondre

3

ok bien voir cette marque williams semble avoir été AWOL je vais poster la version corrigée de sa réponse

echo 1234 | perl -e 'print pack("N", <STDIN>); > int 
5

Un peu plus simple moyen serait:

printf "0: %08X" 1234 | xxd -r > int 
0

cela semble produire la même sortie sur mon système. assurez-vous de vérifier perldoc -f pack.

echo '1234' | perl -e 'print pack("nn", 0,<STDIN>);' > int

+0

ne fonctionne que pour les numéros jusqu'à 65535 –

+0

alors ce que je veux vraiment est pack ("N", ) –

+0

ouais, heureux que vous ayez attrapé mon erreur et désolé je n'ai pas pris mes propres conseils et consulter perldoc d'abord. –

Questions connexes