Communauté Eggdrop

Version complète : Conversion de nombres entre différentes bases numériques
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Voici une collection de procédures qui vous aideront à convertir des nombres entre diverses bases numériques.

La syntaxe de chaque procédure est la même : vous devez passer le nombre à convertir en paramètre.


décimal -> binaire
tcl
proc dec2bin dec2bin_dec {
	binary scan [binary format I $dec2bin_dec] B32 dec2bin_bin
	return $dec2bin_bin
}



décimal -> hexadécimal
tcl
proc dec2hex dec2hex_dec {
	return [format %x $dec2hex_dec]
}



décimal -> octal
tcl
proc dec2oct dec2oct_dec {
	return [format %o $dec2oct_dec]
}



binaire -> décimal
tcl
proc bin2dec bin2dec_bin {
	return [hex2dec [bin2hex $bin2dec_bin]]
}



binaire -> hexadécimal
tcl
proc bin2hex bin2hex_binary {
	array set bin2hex_array {
		0000 0 0001 1 0010 2 0011 3 0100 4
		0101 5 0110 6 0111 7 1000 8 1001 9
		1010 a 1011 b 1100 c 1101 d 1110 e 1111 f
	}
	set bin2hex_diff [expr {4-[string length $bin2hex_binary]%4}]
	if {$bin2hex_diff != 4} {
		set bin2hex_binary [format %0${bin2hex_diff}d$bin2hex_binary 0]
	}
	regsub -all .... $bin2hex_binary {$bin2hex_array(&)} bin2hex_hexa
	return [subst $bin2hex_hexa]
}



binaire -> octal
tcl
proc bin2oct bin2oct_bin {
	set bin2oct_dec [hex2dec [bin2hex $bin2oct_bin]]
	return [format %o $bin2oct_dec]
}



hexadécimal -> décimal
tcl
proc hex2dec hex2dec_hexa {
	return [expr 0x$hex2dec_hexa]
}



hexadécimal -> binaire
tcl
proc hex2bin hex2bin_hexa {
	array set hex2bin_array {
		0 0000 1 0001 2 0010 3 0011 4 0100
		5 0101 6 0110 7 0111 8 1000 9 1001
		a 1010 b 1011 c 1100 d 1101 e 1110 f 1111
		A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
	}
	regsub {^0[xX]} $hex2bin_hexa {} hex2bin_hexa
	regsub -all . $hex2bin_hexa {$hex2bin_array(&)} hex2bin_binary
	return [subst $hex2bin_binary]
}



hexadécimal -> octal
tcl
proc hex2oct hex2oct_hex {
	return [dec2oct [hex2dec $hex2oct_hex]]
}



octal -> binaire
tcl
proc oct2bin oct2bin_oct {
	return [dec2bin [oct2dec $oct2bin_oct]]
}



octal -> décimal
tcl
proc oct2dec oct2dec_oct {
	set oct2dec_oct 0$oct2dec_oct
	return [format %i $oct2dec_oct]
}



octal -> hexadécimal
tcl
proc oct2hex oct2hex_oct {
	return [dec2hex [oct2dec $oct2hex_oct]]
}