|
|
|
|
@ -1,13 +1,101 @@
|
|
|
|
|
|
|
|
|
|
// Created by Professional on 10.12.2025.
|
|
|
|
|
|
|
|
|
|
#include <cstdio>
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <cassert>
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
char nibble_to_hex(uint8_t i){
|
|
|
|
|
assert(0x0 <= i && i <= 0xf);
|
|
|
|
|
switch (i) {
|
|
|
|
|
case 0x0: return '0';
|
|
|
|
|
case 0x1: return '1';
|
|
|
|
|
case 0x2: return '2';
|
|
|
|
|
case 0x3: return '3';
|
|
|
|
|
case 0x4: return '4';
|
|
|
|
|
case 0x5: return '5';
|
|
|
|
|
case 0x6: return '6';
|
|
|
|
|
case 0x7: return '7';
|
|
|
|
|
case 0x8: return '8';
|
|
|
|
|
case 0x9: return '9';
|
|
|
|
|
case 0xA: return 'A';
|
|
|
|
|
case 0xB: return 'B';
|
|
|
|
|
case 0xC: return 'C';
|
|
|
|
|
case 0xD: return 'D';
|
|
|
|
|
case 0xE: return 'E';
|
|
|
|
|
case 0xF: return 'F';
|
|
|
|
|
default: return '?';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
void print_in_hex(uint8_t byte) {
|
|
|
|
|
cout<< nibble_to_hex(byte >> 4)<<""<<nibble_to_hex(byte & 0x0F);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_in_hex(const void* data, size_t size) {
|
|
|
|
|
const uint8_t* bytes = (const uint8_t*)data;
|
|
|
|
|
for (size_t i = 0; i < size; ++i) {
|
|
|
|
|
print_in_hex(bytes[i]); // байт в шестнадцатеричном виде
|
|
|
|
|
if ((i + 1) % 16 == 0) {
|
|
|
|
|
cout << '\n';
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cout << ' ';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
void print_in_binary(uint8_t byte) {
|
|
|
|
|
for (int bit = 7; bit >= 0; --bit) {
|
|
|
|
|
printf("%d", (byte >> bit) & 1);
|
|
|
|
|
}
|
|
|
|
|
cout<< endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void print_in_binary(const void* data, size_t size) {
|
|
|
|
|
const uint8_t* bytes = (const uint8_t*)data;
|
|
|
|
|
for (size_t i = 0; i < size; ++i) {
|
|
|
|
|
print_in_binary(bytes[i]); // вывод по одному байту
|
|
|
|
|
printf(" "); // пробел между байтами
|
|
|
|
|
if ((i + 1) % 4 == 0) // перевод строки после 4 байт
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
if (size % 4 != 0)
|
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
uint8_t u8 = 0x42;
|
|
|
|
|
uint16_t u16 = 0x42;
|
|
|
|
|
uint32_t u32 = 0x42;
|
|
|
|
|
print_in_hex(u8);
|
|
|
|
|
cout<<" ";
|
|
|
|
|
cout<< endl;
|
|
|
|
|
cout << "u8 bytes: ";
|
|
|
|
|
print_in_hex(&u8, sizeof(u8));
|
|
|
|
|
cout<< endl;
|
|
|
|
|
cout << "u16 bytes: ";
|
|
|
|
|
print_in_hex(&u16, sizeof(u16));
|
|
|
|
|
cout<< endl;
|
|
|
|
|
cout << "u32 bytes: ";
|
|
|
|
|
print_in_hex(&u32, sizeof(u32));
|
|
|
|
|
cout << '\n';
|
|
|
|
|
print_in_hex(&u8,40);
|
|
|
|
|
|
|
|
|
|
cout<< endl;
|
|
|
|
|
printf("%02X", u8);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cout<< endl << "Enter number: ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size_t number_count;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|