Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c中将hextump转换为字符串_C++_C_Hex_Hexdump - Fatal编程技术网

C++ 在c中将hextump转换为字符串

C++ 在c中将hextump转换为字符串,c++,c,hex,hexdump,C++,C,Hex,Hexdump,是否有转换hexdump的方法,例如AEC4D2F3C6A4 E70EA6CEA074F65812D2A34B180CC92B817EDCD867167E7A91C5BEB942F0 在c语言中,每两个十六进制数字组成一个字符?如果是,什么?从标准输入法读取并打印到标准输出: int main() { int ch; while(scanf("%2x", &ch) == 1) putchar(ch); } 我认为您可以根据特定的源和目标要求轻松修改它。

是否有转换hexdump的方法,例如AEC4D2F3C6A4 E70EA6CEA074F65812D2A34B180CC92B817EDCD867167E7A91C5BEB942F0
在c语言中,每两个十六进制数字组成一个字符?如果是,什么?

从标准输入法读取并打印到标准输出:

int main() 
{
    int ch;
    while(scanf("%2x", &ch) == 1)
        putchar(ch);
}

我认为您可以根据特定的源和目标要求轻松修改它。

反复使用scanf和
%hhx
。请参见以下方法之一:

size_t unBytes = strHex.size() / 2;
std::string strResult(unBytes, 0);
for (size_t i = 0; i < unBytes; ++i)
{
    std::istringstream in(strHex.substr(2*i, 2));
    int byte = 0;
    in >> std::hex >> byte;
    strResult[i] = byte;
}
size\u t unBytes=strHex.size()/2;
std::字符串strResult(未字节,0);
对于(大小i=0;i>标准::十六进制>>字节中;
strResult[i]=字节;
}

刚刚解码了字符串char*str=“有人会再给我做几次作业:-”);您可以将hextump转换为字节数组。您不必将其转换为字符串。如果您有一个0x00字节呢?或者在你的字符编码中无效的字节?你找到了我——我不能确定这是否是一个笑话。@ JyRAPVIDHAHACK:它是C++ =)当然它可以做得更短更快。我刚从我的一张照片上复制粘贴了它programs@Nawaz非常感谢。最初未启动和未启动有一些offsets@ssmir:好的。我意识到,
istringstream
需要调用
substr()
(在理想情况下,它会让构造函数使用迭代器对,这样可以避免这种情况,但这不是你的错),但请至少在
strResult
中预先分配足够的空间,并使用
strResult[I]=byte而不是通过
encoded
进行浪费。你根本不需要
编码
。@j\u random\u黑客谢谢你。最初我需要这个向量,但现在-不是。