可以使用以下代码将一段内存数据以十六进制字符串打印出来:

#include <iostream>
#include <iomanip>

void printHex(const unsigned char* data, size_t length) {
    std::cout << std::hex << std::setfill('0');
    for (size_t i = 0; i < length; ++i) {
        std::cout << std::setw(2) << (unsigned int)data[i] << ' '; 
    }
    std::cout << std::dec << std::endl;
}

int main() {
    unsigned char data[] = {0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0};
    size_t length = sizeof(data) / sizeof(data[0]);
    printHex(data, length);
    return 0;
}

输出结果为:

12 34 56 78 9a bc de f0

该函数接收一个指向内存数据的指针和数据长度,使用std::cout以十六进制格式打印每个字节的值,并在每个字节之间加上一个空格。std::setw()std::setfill()函数用于设置每个字节的宽度和填充字符。

C++20: 如何将内存数据以十六进制字符串打印

原文地址: https://www.cveoy.top/t/topic/lEE1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录