In giá trị Hex trong C++

In Gia Tri Hex Trong C



Trong lập trình C++, in các giá trị thập lục phân là một yêu cầu phổ biến. Cho dù làm việc với các địa chỉ bộ nhớ, thực hiện các thao tác Bitwise hay xử lý các biểu diễn dữ liệu thập lục phân, điều cần thiết là phải nắm bắt các phương pháp khác nhau để hiển thị hiệu quả các giá trị hex. Bài viết này khám phá các phương pháp và kỹ thuật khác nhau để in các giá trị thập lục phân trong C++, làm sáng tỏ các ứng dụng và trường hợp sử dụng của chúng.

In các giá trị Hex bằng Std::hex

Một cách đơn giản để in các giá trị thập lục phân trong C++ là sử dụng trình thao tác “std::hex” được cung cấp bởi tiêu đề . Trình thao tác này hướng dẫn luồng đầu ra diễn giải các giá trị số nguyên dưới dạng thập lục phân khi in. Hãy tưởng tượng bạn có một rương kho báu chứa đầy những con số. Nhưng thay vì hệ thống thập phân thông thường, tất cả chúng đều được viết bằng ngôn ngữ bí mật là hệ thập lục phân. Để giải mã các mã này và tiết lộ giá trị thực của chúng, C++ cung cấp một công cụ hữu ích có tên là “std::hex”. Trò ảo thuật này trong thư viện sẽ biến luồng đầu ra của bạn thành vòng giải mã, dịch ngay lập tức những số thập lục phân bí ẩn đó thành các số thập phân quen thuộc của chúng.







#include
#include
int chính ( ) {
int giá trị thập phân = 907 ;
std::cout << 'Giá trị thập lục phân là:' << std::hex << giá trị thập phân << std::endl;
trở lại 0 ;
}


Trong ví dụ này, trình thao tác “std::hex” được áp dụng cho luồng đầu ra “std::cout” trước khi in số nguyên “decimalValue”. Sau khi in giá trị hex, luồng sẽ được hoàn nguyên về trạng thái bình thường. Mã này trình bày hoàn hảo cách in giá trị thập lục phân bằng cách sử dụng trình thao tác “std::hex” trong C++. Đây là bản phân tích mã:



Tiêu đề



: Nó được dùng cho đầu vào/đầu ra cơ bản như in ra bảng điều khiển và cung cấp trình thao tác “std::hex” để định dạng đầu ra dưới dạng thập lục phân.





Chức năng chính

Giá trị thập phân int = 907; khai báo biến “decimalValue” thuộc loại “int” và gán giá trị thập phân là 907.



“std::cout << “Giá trị thập lục phân là: ” << std::hex << Giá trị thập phân << std::endl;” in “Giá trị thập lục phân:” theo sau là biểu diễn thập lục phân của “giá trị thập lục phân”.

“std::hex” hướng dẫn luồng đầu ra diễn giải giá trị sau dưới dạng thập lục phân. Biến “decimalValue” chứa giá trị thập phân được chuyển đổi thành hex. “std::endl” chèn ký tự dòng mới sau khi in. Cuối cùng, mã này hiện in “Giá trị thập lục phân: 38B” như bạn có thể thấy trong đoạn mã đầu ra sau:

In các giá trị Hex bằng cách sử dụng Bộ xác định định dạng “%x”

Đối với những người quen thuộc với ngôn ngữ lập trình C, hàm “printf” in chính xác các giá trị thập lục phân trong C++. Trong khi C++ cung cấp cách tiếp cận và “std::hex”, thì “printf” cung cấp một cách ngắn gọn và trực tiếp để đạt được kết quả tương tự.

#include
int chính ( ) {
int giá trị thập phân = 1256 ;
printf ( 'Giá trị thập lục phân với printf là: %x \N ' , giá trị thập phân ) ;
trở lại 0 ;
}


Trong ví dụ này, bộ xác định định dạng “%x” trong hàm “printf” chỉ ra rằng đối số tương ứng phải được in ở dạng thập lục phân. Mã đã cho là một ví dụ hoàn hảo về việc in giá trị thập lục phân bằng cách sử dụng “printf” trong C++. Hãy chia nhỏ nó ra:

Tiêu đề

: Tiêu đề này bao gồm hàm “printf” và các hàm đầu vào/đầu ra tiêu chuẩn khác. Tiêu đề được bao gồm trong bộ thư viện đi kèm với C++. Nó mang chức năng từ thư viện của ngôn ngữ C, cho phép C++ sử dụng các kỹ thuật đầu vào và đầu ra cổ điển ban đầu được tìm thấy trong C thông qua việc đưa vào .

Chức năng chính

Giá trị thập phân int = 1256; khai báo và gán giá trị thập phân 1256 cho một biến số nguyên có tên là “decimalValue”. “printf” trong “printf(“Giá trị thập lục phân với printf là: %x\n”, giá trị thập phân);” câu lệnh gọi hàm “printf” để in kết quả đã được định dạng. “%x” là “bộ xác định định dạng” cho biết đối số sau phải được in dưới dạng số thập lục phân chữ thường. Cuối cùng, “\n” chèn ký tự dòng mới sau khi in. Mã này xuất ra bảng điều khiển “Giá trị thập lục phân với printf là 4e8” như trong đoạn mã đầu ra sau:

In các giá trị Hex bằng phần đệm

Khi xử lý các giá trị thập lục phân, đặc biệt là địa chỉ bộ nhớ, độ rộng hoặc phần đệm nhất quán thường được mong muốn. Điều này có thể đạt được bằng cách sử dụng trình thao tác “std::setw” được cung cấp bởi tiêu đề . Dưới đây là ví dụ về cách in giá trị HEX có phần đệm. Chương trình này trình bày cách in một giá trị thập lục phân trong C++ có phần đệm bằng cách sử dụng các phương thức thao tác và tiêu đề .

#include
#include
int chính ( ) {
int giá trị thập phân = 47 ;
std::cout << 'Giá trị thập lục phân có phần đệm là: ' << std::setw ( số 8 ) << std::hex << giá trị thập phân << std::endl;
trở lại 0 ;
}


Trong ví dụ này, std::setw(8) đảm bảo rằng giá trị thập lục phân được in với độ rộng tối thiểu là 8 ký tự. Điều này đặc biệt hữu ích cho việc căn chỉnh các giá trị trong cột hoặc với địa chỉ bộ nhớ.

Chúng ta hãy phá mã và hiểu từng dòng một:

Tiêu đề

: Nó cung cấp chức năng đầu vào/đầu ra cơ bản như luồng “std::cout” để in.

: Nó cung cấp các trình thao tác định dạng như “std::setw” được dùng để sửa đổi giao diện đầu ra.

Chức năng chính

Giá trị thập phân int = 47; khai báo và gán giá trị thập phân là 47 cho một biến số nguyên có tên là “decimalValue”.

“std::cout << “Giá trị thập lục phân có phần đệm là: ” << std::setw(8) << std::hex << Giá trị thập phân << std::endl;” câu lệnh in số thập lục phân của 47 với phần đệm setw(8). “std::setw(8)” áp dụng trình thao tác “std::setw” với đối số là 8, chỉ định độ rộng đầu ra tối thiểu là 8 ký tự.

“std::hex” áp dụng trình điều khiển “std::hex” để yêu cầu luồng diễn giải giá trị tiếp theo dưới dạng thập lục phân như được giải thích trong một trong các ví dụ đã cho. Đầu ra sau đây được in ra bàn điều khiển:

In giá trị Hex của dữ liệu Byte

Khi làm việc với dữ liệu byte, thông thường biểu thị mỗi byte dưới dạng giá trị thập lục phân gồm hai chữ số. Điều này có thể đạt được bằng cách đảm bảo rằng chiều rộng được đặt thành 2 và sử dụng “std::setfill(‘0’)” để điền vào các số 0 ở đầu. Sau đây là ví dụ giúp bạn hiểu cách thực hiện việc in các giá trị hex của dữ liệu byte:

#include
#include
int chính ( ) {
char byteData không dấu = 0xAB;
std::cout << 'Biểu diễn thập lục phân của dữ liệu byte là:'
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << tĩnh_cast < int > ( byteData )
<< std::endl;
trở lại 0 ;
}


Ở đây, “std::setw(2)” đảm bảo rằng mỗi byte được biểu thị với độ rộng tối thiểu là 2 ký tự và “std::setfill('0')” chỉ định rằng các số 0 đứng đầu phải được sử dụng để lấp đầy chiều rộng.

Chương trình đã cho trước đây thể hiện một cách tiếp cận nâng cao hơn để in giá trị thập lục phân trong C++ với định dạng cụ thể. Chúng ta hãy chia nhỏ nó để hiểu rõ hơn:

Tiêu đề

: Nó cung cấp chức năng đầu vào/đầu ra cơ bản như “std::cout” và “std::hex” để in.

: Nó cung cấp các trình thao tác định dạng như “std::setw” và “std::setfill” được dùng để sửa đổi giao diện đầu ra.

Chức năng chính

Trong hàm chính, “byteData = 0xAB;” không dấu char được xác định để khai báo một biến unsigned char có tên là 'byteData' và gán giá trị thập lục phân '0xAB' cho biến đó. Câu lệnh “std::cout << “Biểu diễn thập lục phân của dữ liệu byte là: “:” xuất thông báo tới bảng điều khiển bằng luồng đầu ra.

“<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;” chuỗi câu lệnh áp dụng nhiều thao tác để định dạng đầu ra.

std::setw(2): Nó đặt độ rộng đầu ra tối thiểu là 2 ký tự.

std::setfill('0'): Nó chỉ định rằng mọi khoảng đệm cần thiết để đạt được chiều rộng tối thiểu đều phải được điền bằng ký tự “0”.

std::hex: Nó yêu cầu luồng diễn giải giá trị tiếp theo dưới dạng thập lục phân.

static_cast (byteData): Nó chuyển dữ liệu ký tự không dấu thành “int” trước khi chuyển đổi thành thập lục phân. Điều này không cần thiết về mặt kỹ thuật nhưng có thể được sử dụng để thống nhất với một số tùy chọn định dạng.

std::endl: Nó chèn ký tự dòng mới sau khi in.

Đầu ra của chương trình này được in trên bảng điều khiển được hiển thị trong đoạn mã sau:

Phần kết luận

Việc in các giá trị thập lục phân trong C++ đòi hỏi phải hiểu các công cụ có sẵn và chọn phương pháp thích hợp dựa trên các yêu cầu cụ thể. Cho dù bạn chọn trình thao tác “std::hex”, hàm “printf” hay kết hợp các công cụ định dạng để đệm và các số 0 ở đầu, thì việc nắm vững các kỹ thuật này là điều cần thiết đối với bất kỳ lập trình viên C++ nào. Bằng cách áp dụng các phương pháp này một cách chu đáo, bạn có thể đảm bảo rằng các giá trị thập lục phân của mình được hiển thị chính xác và ở định dạng hấp dẫn trực quan góp phần vào khả năng đọc và độ rõ tổng thể của mã C++ của bạn.