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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了套接字数据(char)c ++的十六进制表示相关的知识,希望对你有一定的参考价值。

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

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

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);
}
答案

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

以上是关于套接字数据(char)c ++的十六进制表示的主要内容,如果未能解决你的问题,请参考以下文章

C语言char类型数据是否远远不止ASCII码

c语言中计算int,float,double,char四种数据类型所能表示的数据范围

C语言进阶数据的存储

信息的表示和处理

C++000001

c语言中采用二进制文件存储数据的问题