套接字数据(char)c ++的十六进制表示

时间:2017-12-17 17:50:09

标签: c++ sockets char hex

我正在使用C ++编写数据包嗅探器。它现在正在工作,但我收到一个字符缓冲区,我想以十六进制表示在屏幕上显示数据包数据。

我已经研究过char到十六进制的转换,但是当数据包数据有一个带有扩展的ascii代码的字符,比如像'ê'字符或者其他像这样的字符串时,我有一个问题。当发生这种情况时,'ê'字符显示为{0xA8,0xBA},有时像{0xBA},而不像{0xC3,0xAA},根据www.asciitohex.com中的转换。

int WINAPI send(SOCKET s, const char* buf, int len, int flags)
{
    //do the conversion of socket data here
    return pSend(s, buf, len, flags);
}

1 个答案:

答案 0 :(得分:0)

没有一个“带有扩展ascii代码的字符,比如'ê'字符”。你只有一个炭。您的问题来自将二进制文件转换为字符串,然后尝试将其转换为十六进制。只需直接从源字节数组转换数据。