Skip to content

Commit 8e74d4c

Browse files
author
x-VEspit
committed
Ajout: Conversions entier->str et str->entier : decimal, hexadecimal, binaire, octal
1 parent 2b8088a commit 8e74d4c

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

src/conversions_hexa_bin_dec.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
// Ne pas faire de warning s'il y a des parenthèses en trop autour des conditions des if
3+
#![allow(unused_parens)]
4+
5+
// Ne pas faire de warning si des fonctions ne sont pas appelées
6+
#![warn(dead_code)]
7+
8+
use std::fmt::{Write};
9+
10+
pub fn conversions_entier()
11+
{
12+
13+
// Ecriture de valeurs décimales / hexadécimales / binaires / octales
14+
// dans le code Rust
15+
let v_dec: u64 = 37;
16+
let v_hex: u64 = 0x25;
17+
let v_bin: u64 = 0b100101;
18+
let v_oct: u64 = 0o45;
19+
assert_eq!(v_dec, v_hex, "Erreur dans la conversion (1)");
20+
assert_eq!(v_dec, v_bin, "Erreur dans la conversion (2)");
21+
assert_eq!(v_dec, v_oct, "Erreur dans la conversion (3)");
22+
23+
24+
// Conversion décimal -> string hexa, binaire, octale
25+
let s_hex_verif: String = "0x25".to_string();
26+
let s_bin_verif: String = "0b100101".to_string();
27+
let s_oct_verif: String = "0o45".to_string();
28+
let mut s: String = String::new();
29+
30+
write!(s, "{:#x}", v_dec).expect("Erreur dans writeln (1)");
31+
assert_eq!(s, s_hex_verif, "Erreur dans la conversion (4)");
32+
33+
s = "".to_string();
34+
write!(s, "{:#b}", v_dec).expect("Erreur dans writeln (2)");
35+
assert_eq!(s, s_bin_verif, "Erreur dans la conversion (5)");
36+
37+
s = "".to_string();
38+
write!(s, "{:#o}", v_dec).expect("Erreur dans writeln (3)");
39+
assert_eq!(s, s_oct_verif, "Erreur dans la conversion (6)");
40+
41+
42+
// Conversion string hexa, binaire, octale -> décimal
43+
let v = u64::from_str_radix(&s_hex_verif[2..], 16).expect("Erreur dans u64::from_str_radix (1)");
44+
assert_eq!(v, v_dec, "Erreur dans la conversion (7)");
45+
46+
let v = u64::from_str_radix(&s_bin_verif[2..], 2).expect("Erreur dans u64::from_str_radix (2)");
47+
assert_eq!(v, v_dec, "Erreur dans la conversion (8)");
48+
49+
let v = u64::from_str_radix(&s_oct_verif[2..],8).expect("Erreur dans u64::from_str_radix (3)");
50+
assert_eq!(v, v_dec, "Erreur dans la conversion (9)");
51+
52+
}

src/main.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ mod tri_variantes;
1212
mod divers;
1313
mod rationnels;
1414
mod fichiers;
15+
mod conversions_hexa_bin_dec;
1516

1617
#[cfg(test)]
1718
mod tests;
@@ -35,7 +36,8 @@ fn main() {
3536
let b_test_probas = false;
3637
let b_test_algos_divers = false;
3738
let b_test_rationnels = false;
38-
let b_test_fichiers = true;
39+
let b_test_fichiers = false;
40+
let b_test_conversions_entiers = true;
3941

4042
// Test des fonctions 'mathématiques': Factorielle, pgcd, fibonacci_interatif, fibonacci_recursif
4143
if (b_test_fonctions_math)
@@ -375,4 +377,9 @@ fn main() {
375377

376378
}
377379

380+
if (b_test_conversions_entiers)
381+
{
382+
conversions_hexa_bin_dec::conversions_entier();
383+
}
384+
378385
}

0 commit comments

Comments
 (0)