Communauté Eggdrop
Convertir un nombre d'octets en ko/Mo/Go/To/Po/Eo/Zo ou kio/Mio/Gio/Tio/Pio/Eio/Zio - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Bouts de Scripts (https://forum.eggdrop.fr/forumdisplay.php?fid=17)
+--- Sujet : Convertir un nombre d'octets en ko/Mo/Go/To/Po/Eo/Zo ou kio/Mio/Gio/Tio/Pio/Eio/Zio (/showthread.php?tid=1773)



Convertir un nombre d'octets en ko/Mo/Go/To/Po/Eo/Zo ou kio/Mio/Gio/Tio/Pio/Eio/Zio - CrazyCat - 30/01/2024

Code de MenzAgitat

tcl
proc octet_formatting {value {SI 1}} {
	if { $SI } {
		set base 1024
		set units {Kio Mio Gio Tio Pio Eio Zio}
	} else {
		set base 1000
		set units {Ko Mo Go To Po Eo Zo}
	}   
	if { $value < $base } { return "${value}o" }
	foreach unit $units {
		set value [expr {$value / ($base / 1.0)} ]
		if { $value < $base } {
			return "[format %1.2f $value]$unit"
		}
	}
}



Conversion inverse
tcl
proc form2oct {formated} {
	set usi {kio Mio Gio Tio Pio Eio Zio}
	set units {ko Mo Go To Po Eo Zo}
	set base 1000
	regexp {([0-9\.]+)(\w+)} $formated - s u
	if {$u in $usi} {
		set units $usi
		set base 1024
	}
	for {set i [lsearch $units $u]} {$i>=0} {incr i -1} {
		set s [expr $s * $base]
	}
	return $s
}