From 1b84da8f9d9604849be3113d9865904ad75d230c Mon Sep 17 00:00:00 2001 From: Amoelle Date: Thu, 3 Jul 2025 13:13:44 +0300 Subject: [PATCH] init --- .gitignore | 1 + Cargo.lock | 7 +++++++ Cargo.toml | 6 ++++++ example.txt | 3 +++ src/hd_ai.rs | 36 ++++++++++++++++++++++++++++++++++++ src/main.rs | 30 ++++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 example.txt create mode 100644 src/hd_ai.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..8885c74 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "hexdump" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..4f087e3 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hexdump" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/example.txt b/example.txt new file mode 100644 index 0000000..32b0639 --- /dev/null +++ b/example.txt @@ -0,0 +1,3 @@ +forsen is bald +forsen is bald +forsen is bald diff --git a/src/hd_ai.rs b/src/hd_ai.rs new file mode 100644 index 0000000..7a0b3ac --- /dev/null +++ b/src/hd_ai.rs @@ -0,0 +1,36 @@ +use std::env; +use std::fs::File; +use std::io::{self, Read}; + +fn main() -> io::Result<()> { + // Get the file name from command line arguments + let args: Vec = env::args().collect(); + if args.len() < 2 { + eprintln!("Usage: {} ", args[0]); + return Ok(()); + } + let filename = &args[1]; + + // Open the file + let mut file = File::open(filename)?; + let mut buffer = Vec::new(); + + // Read the file into the buffer + file.read_to_end(&mut buffer)?; + + // Print the hex dump + for (i, byte) in buffer.iter().enumerate() { + // Print the address + if i % 16 == 0 { + if i != 0 { + println!(); // New line after every 16 bytes + } + print!("{:08x} ", i); + } + // Print the byte in hex format + print!("{:02x} ", byte); + } + println!(); // Final new line + + Ok(()) +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..06764bb --- /dev/null +++ b/src/main.rs @@ -0,0 +1,30 @@ +use std::env; +use std::fs; + +fn main() { + let args: Vec = env::args().collect(); + + if args.len() < 2 { + eprintln!("Usage: {} ", args[0]); + return; + } + + let file_path = &args[1]; + let contents = fs::read(file_path).expect("Failed to read file"); + + println!("File name: {file_path}\n"); + println!("Contents of the file but in hex:"); + + hex(&contents); +} + +fn hex(bytes: &[u8]) { + for (i, &byte) in bytes.iter().enumerate() { + if i % 8 == 0 { + print!("\n{:08x}: ", i); + } + print!("{:04x} ", byte); + } + + println!(); +}