以十六进制表示法将字节缓冲区的字节打印到控制台输出流(0xABCDEF)

时间:2014-08-25 07:48:11

标签: c++ c types bytebuffer hex

我知道有很多关于这个主题的问题,但我认为找不到合适的关键字,所以我问。

我想以十六进制表示法(0xABCDEF)将字节缓冲区的字节打印到控制台输出,但我不知道字节缓冲区是什么,它用于什么?

我需要以下内容,而且我只是一个初学者,所以请简单说明我能得到的。 (用c / c ++)

@param pBytes指向字节缓冲区的指针 @param nBytes字节缓冲区的长度,以字节为单位

void PrintBytes(const char* pBytes, const uint32_t nBytes);

我需要这些功能。

你不需要给出我需要你的答案,让我更容易! 谢谢!

2 个答案:

答案 0 :(得分:7)

使用C ++,您可以执行以下操作:

#include <iostream>
#include <iomanip>

void PrintBytes(
    const char* pBytes,
    const uint32_t nBytes) // should more properly be std::size_t
{
    for (uint32_t i = 0; i != nBytes; i++)
    {
        std::cout << 
            std::hex <<           // output in hex
            std::setw(2) <<       // each byte prints as two characters
            std::setfill('0') <<  // fill with 0 if not enough characters
            static_cast<unsigned int>(pBytes[i]) << std::endl;
    }
}

答案 1 :(得分:2)

使用hex操纵器

#include <iomanip>
#include <iostream>

void PrintBytes(const char* pBytes, const uint32_t nBytes) {
    for ( uint32_t i = 0; i < nBytes; i++ ) {
        std::cout << std::hex << (unsigned int)( pBytes[ i ] );
    }
}