Skip navigation.

devloop :: blog

Blog sur la sécurité informatique, la programmation, Linux et le Web

Posts tagged with "conversion"

Convertir des nombres en ligne de commande

, ,

Tout "bidouilleur" qui se respecte a forcément à portée de main (ou de quelques clics de souris) une table ascii et un logiciel pour convertir des chiffres d'une base à une autre (binaire, décimal, hexadécimal, octal).
En ce qui me concerne, pour la table ascii j'ai la même qui traine sur mon bureau depuis environ 8 ans p: Par contre le problème se pose pour la conversion des chiffres. J'ai plutôt tendance à utiliser la calculatrice de KDE3 (KCalc) mais ça m'oblige à passer par le menu KDE, choisir "Applications", "Utilitaires", "Calculatrice"... ce n'est pas très rapide surtout que si on ferme la calculatrice on est bon pour répéter le même cheminement la première fois :frown:

Bref ce serait tellement plus rapide d'avoir un outil de conversion de nombres en ligne de commande :smile:
Sous Linux on a bien "bc" qui permet de réaliser des conversions en utilisant les commandes "ibase" et "obase".
> bc
obase=2
ibase=16
DEADC0DE
11011110101011011100000011011110

Ca marche bien seulement là encore on a plein de choses à taper, c'est interactif : on ne peut pas passer les arguments en ligne de commande et utiliser un echo+pipe ça ne me dit trop rien...

Après quelques recherches peu concluantes, j'ai finalement trouvé un petit outil sympathique sur SourceForge nommé Number Converter (numcv).

Pour le compiler on utilisera la commande "gcc -o numcv numcv.c -lm".
La commande prend trois arguments. Le premier est la base d'origine du nombre qui tient sur un seul caractère : 'o' pour octal, 'd' pour décimal, 'h' pour hexadécimal et 'b' pour binaire.
Le second argument est le nombre à convertir et enfin le dernier argument est la base de sortie pour la conversion (les même caractères que précédemment).

Ce qui donne par exemple :
> numcv d 31337 x
0x7a69
> numcv x 29a d
666
> numcv o 56 b
101110

On peut en plus spécifier la base 'a' qui nous permet de connaître la valeur d'un caractère ascii :
> numcv a A x
0x41

Le seul inconvénient est que l'on ne peut convertir qu'un nombre/caractère à la fois. Et aussi une fonction usage() avec une option -h ne serait pas du luxe p:

Au final un outil sympathique en ligne de commande et qui s'avère vite indispensable :smile:

Convertir des MPC en MP3 sous Linux

, , , ...

Logiciels nécessaires : lame, unzip, mppdec (à télécharger)

Vous venez de récupérer un album mais vous découvrez que les titres sont au format MPC que vous ne connaissez pas ?
On va voir comment convertir ces fichiers Musepack (extension .mpc) en fichiers .mp3...

D'après Wikipedia, Musepack est un codec de compression audio open-source qui offre des performances assez similaires au format Ogg.
Bien que les librairies MPC/Musepack soient open-source, ce n'est apparemment pas le cas des encoders et décodeurs de fichiers MPC, c'est pour cela que votre distribution ne vous les propose peut-être pas.

Pour commencer vous devez télécharger le binaire du décodeur disponible ici. Prenez la version liée dynamiquement.
Ensuite décompressez l'archive avec la commande "unzip mppdec-linux-libc6-1.95z2.zip" (adaptez en fonction de la version du logiciel) ou utilisez votre gestionnaire d'archives préféré (file-roller ou Ark par exemple). Vous devez bien sûr disposer de la commande unzip dans tous les cas.

Vous obtiendrez alors un binaire nommé "mppdec". Rendez le exécutable (chmod u+x mppdec en console) puis placez le dans un répertoire de votre path (/usr/bin/ ou ~/bin/ s'il existe).
Vous pouvez appeler l'exécutable sans option pour vérifier qu'il se trouve dans votre path.

Placez vous maintenant dans votre répertoire où se trouvent les fichiers mpc. Attention, une fois les fichiers convertis en mp3, les fichiers mpc et wav du répertoire seront effacés. Il est préférable que le dossier ne contienne que les fichiers à décoder.
Tappez les commandes :
for a in *.mpc; do n=`echo $a| cut -d. -f1`.wav;mppdec "$a" "$n";done
for a in *.wav; do n=`echo $a| cut -d. -f1`.mp3;lame -h "$a" "$n";done
rm *.mpc *.wav


Ca y est, vos fichiers sont convertis en mp3 :smile:
Pensez à mettre à jour vos tags ID3 après.

Et un script perl proposé par un visiteur :
#!/usr/bin/perl -w
use strict;

foreach my $file (@ARGV) {
  next if ($file !~ /\.mpc$/i);
  my $base = $file; $base =~ s/\.mpc$//i;
  #utilisation de mppdec pour decoder le .mpc et de lame pour encoder en .mp3
  system "mppdec \"$file\" - | lame --preset fast standard - \"$base.mp3\"";
  #affichage du message de fin
  print "$base.wma converti en mp3.\n";
}