Added platform endianess detection and fixed String byte conversion.
This commit is contained in:
@ -41,7 +41,7 @@ pub fn use_transmutable()
|
||||
// Initialize the variables.
|
||||
num = 6.291985f32;
|
||||
buffer = Vec::new();
|
||||
endianess = Endianess::PLATFORM;
|
||||
endianess = Endianess::Platform;
|
||||
|
||||
println!("Converting the value {} into and out of an array of bytes.", num);
|
||||
println!("Buffer starts as: {}", stringify_array(buffer.as_slice()));
|
||||
|
113
examples/convert_u16.rs
Normal file
113
examples/convert_u16.rs
Normal file
@ -0,0 +1,113 @@
|
||||
#![feature(convert)]
|
||||
|
||||
extern crate alchemy;
|
||||
|
||||
|
||||
use alchemy::U16_BYTES;
|
||||
use alchemy::{Converter, Endianess, PlatformEndian, Transmutable};
|
||||
use alchemy::platform_to_network_order;
|
||||
|
||||
|
||||
|
||||
fn use_converter()
|
||||
{
|
||||
let num: u16;
|
||||
let final_num: u16;
|
||||
let mut buffer: Vec<u8>;
|
||||
|
||||
// Initialize the variables.
|
||||
num = 32832u16;
|
||||
buffer = Vec::new();
|
||||
|
||||
println!("Converting the value {} into and out of an array of bytes.", num);
|
||||
println!("Buffer starts as: {}", stringify_array(buffer.as_slice()));
|
||||
|
||||
// Convert the short point number into an array of bytes.
|
||||
buffer = PlatformEndian::u16_to_bytes(num);
|
||||
|
||||
println!("Buffer contains: {}", stringify_array(buffer.as_slice()));
|
||||
|
||||
// Convert the array of bytes into a short number.
|
||||
final_num = PlatformEndian::bytes_to_u16(buffer.as_slice());
|
||||
println!("The buffer converts back to: {}", final_num);
|
||||
}
|
||||
|
||||
pub fn use_transmutable()
|
||||
{
|
||||
let num: u16;
|
||||
let final_num: u16;
|
||||
let endianess: Endianess;
|
||||
let mut buffer: Vec<u8>;
|
||||
|
||||
// Initialize the variables.
|
||||
num = 32832u16;
|
||||
buffer = Vec::new();
|
||||
endianess = Endianess::Platform;
|
||||
|
||||
println!("Converting the value {} into and out of an array of bytes.", num);
|
||||
println!("Buffer starts as: {}", stringify_array(buffer.as_slice()));
|
||||
|
||||
// Convert the short point number into an array of bytes.
|
||||
buffer = num.to_bytes(endianess);
|
||||
|
||||
println!("Buffer contains: {}", stringify_array(buffer.as_slice()));
|
||||
|
||||
// Convert the array of bytes into a short number.
|
||||
final_num = u16::from_bytes(buffer.as_slice(), endianess);
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
pub fn main()
|
||||
{
|
||||
println!("Using converter:");
|
||||
use_converter();
|
||||
|
||||
println!("");
|
||||
|
||||
println!("Using transmutable:");
|
||||
use_transmutable();
|
||||
|
||||
println!("");
|
||||
|
||||
println!("This turns into a network value of: {}",
|
||||
platform_to_network_order(32832u16));
|
||||
}
|
13
examples/determine_endianess.rs
Normal file
13
examples/determine_endianess.rs
Normal file
@ -0,0 +1,13 @@
|
||||
extern crate alchemy;
|
||||
|
||||
|
||||
|
||||
use alchemy::{get_platform_endianess, get_network_endianess};
|
||||
|
||||
|
||||
|
||||
pub fn main()
|
||||
{
|
||||
println!("Platform Endian: {}", get_platform_endianess());
|
||||
println!("Network Endian: {}", get_network_endianess());
|
||||
}
|
Reference in New Issue
Block a user