Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

95 строки
2.5 KiB
C++

#include <iostream>
#include <cstdint>
#include <bitset>
#include <cstring>
using namespace std;
void print_in_hex(uint8_t byte)
{
cout << hex << uppercase
<< static_cast<int>(byte / 16)
<< static_cast<int>(byte % 16);
}
void print_in_hex(const void* data, size_t size)
{
const uint8_t* bytes = static_cast<const uint8_t*>(data);
for (size_t i = 0; i < size; ++i)
{
print_in_hex(bytes[i]);
cout << ' ';
if ((i + 1) % 16 == 0 || i == size - 1)
cout << endl;
}
cout << dec;
}
void print_in_binary(uint8_t byte)
{
bitset<8> bits(byte);
cout << bits;
}
void print_in_binary(const void* data, size_t size)
{
const uint8_t* bytes = static_cast<const uint8_t*>(data);
for (size_t i = 0; i < size; ++i)
{
print_in_binary(bytes[i]);
cout << ' ';
if ((i + 1) % 4 == 0 || i == size - 1)
cout << endl;
}
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "----Тестирование функций печати\n" << endl;
cout << "1. Печать отдельных байт:" << endl;
uint8_t test_byte = 0xAB;
cout << "print_in_hex(0xAB): ";
print_in_hex(test_byte);
cout << endl;
cout << "print_in_binary(0xAB): ";
print_in_binary(test_byte);
cout << endl;
cout << "\n2. Печать массива данных (12 байт):" << endl;
uint8_t test_data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C };
cout << "В шестнадцатеричном виде:" << endl;
print_in_hex(test_data, sizeof(test_data));
cout << "\nВ двоичном виде:" << endl;
print_in_binary(test_data, sizeof(test_data));
cout << "\n3. Печать строки \"Hello\":";
const char* test_string = "Hello";
cout << "\nВ шестнадцатеричном виде:" << endl;
print_in_hex(test_string, strlen(test_string) + 1);
cout << "\nВ двоичном виде:" << endl;
print_in_binary(test_string, strlen(test_string) + 1);
cout << "\n4. Печать числа int = 0x12345678:" << endl;
int test_int = 0x12345678;
cout << "В шестнадцатеричном виде:" << endl;
print_in_hex(&test_int, sizeof(test_int));
cout << "\nВ двоичном виде:" << endl;
print_in_binary(&test_int, sizeof(test_int));
return 0;
}