#![feature(convert)] extern crate alchemy; use alchemy::F32_BYTES; use alchemy::{Converter, PlatformEndian}; pub fn main() { let num: f32; let final_num: f32; let mut buffer: [u8; F32_BYTES]; // Initialize the variables. num = 6.291985f32; buffer = [0u8; F32_BYTES]; println!("Converting the value {} into and out of an array of bytes.", num); println!("Buffer starts as: {}", stringify_array(&buffer)); // Convert the floating point number into an array of bytes. PlatformEndian::f32_to_bytes(&mut buffer, num); println!("Buffer contains: {}", stringify_array(&buffer)); // Convert the array of bytes into a floating point number. final_num = PlatformEndian::bytes_to_f32(&buffer); println!("The buffer converts back to: {}", final_num); } /// This just help pretty up the printing of an array of bytes. fn stringify_array(buffer: &[u8]) -> String { let mut result: String; let mut count: usize; // Create a new string that starts with just // the array opening bracket. result = String::new(); result.push_str("["); // Loop through the buffer keeping track // of our place in it. count = 0usize; for byte in buffer { // Handle priting the last value differently. if count >= buffer.len() - 1 { result.push_str(byte.to_string().as_str()); } else { result.push_str(byte.to_string().as_str()); result.push_str(", "); } // Mark that we are going to look at // the next byte in the array. count += 1; } // Add the array closing bracket and // return the new String. result.push_str("]"); result }