首页 > 解决方案 > 如何打印出 PBYTE 的内容?

问题描述

我的理解PBYTEunsigned char*来自Windows Data Types

我希望能够使用printf()或打印所有内容cout

PBYTE buffer;
ULONG buffersize = NULL;
serializeData(data, buffer, buffersize); 
//this function serializes "data" and stores the data in buffer and updates bufferSize).. 

你能帮我理解如何用 C++ 打印这个吗?

标签: c++windowsprintfbytecout

解决方案


如果要打印指向的内存地址buffer则可以这样做:

PBYTE buffer;
ULONG buffersize = 0;
serializeData(data, buffer, buffersize); 
//this function serializes "data" and stores the data in buffer and updates bufferSize)...

printf("%p", buffer);
or
std::cout << (void*)buffer;

...

但是,如果要打印缓冲区的内容,则需要遍历缓冲区并分别打印出来BYTE,例如:

PBYTE buffer;
ULONG buffersize = 0;
serializeData(data, buffer, buffersize); 
//this function serializes "data" and stores the data in buffer and updates bufferSize)...

for (DWORD i = 0; i < buffersize; ++i)
{
    printf("%02x ", buffer[i]);
    or
    std::cout << std::hex << std::setw(2) << std::setfill('0') << (unsigned int)buffer[i] << " ";
}

...

推荐阅读