c++ - 如何在 C++ 中将 std::string 转换为十六进制字符数组?

标签 c++ arrays string hex

<分区>

我在 stackexchange 的其他地方找到了这段代码,它工作得很好。

  char *szData = new char[str_hex.size()+1] = "\x4d\x4d\x4d\x5a\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xe0\x00\x00\x00\x0e\x1f\xba\x0e\x00\xb4\x09\xcd\x00\x00\x00\x00\x00\x00\x00\x00";

        system("pause");
        HANDLE hFile; 
        DWORD dwBytesWritten = 0;
        TCHAR szPath[MAX_PATH] = "C:\\Users\\Jules\\Desktop\\halloskos.txt";

        hFile = CreateFile (szPath,               
                           GENERIC_WRITE,         
                           0,                      
                           NULL,                 
                           CREATE_NEW,            
                           FILE_ATTRIBUTE_NORMAL,  
                           NULL);              

        WriteFile( hFile,&hexCh,sizeof(hexCh)-1, &dwBytesWritten, NULL );
        CloseHandle(hFile);
        delete [] szData;

但是,我想从文本文件中提取十六进制数据(存储方式如下:4d5a9000f4 等...)。
使用 fstream,我可以将文本文件的内容转换为字符串,但如何将其转换为代码示例中显示的数组? (所以像这样的字符数组:\x4d\x5a\x90\x00\xf4 等...)
转换示例:
来自:

string str_hex = "4d5a9000f4";

到:

char *ch_hex = new char[str_hex.size()+1] = "\x4d\x5a\x90\x00\xf4"

感谢您的帮助!

最佳答案

当你写作时

"\x4d\x4d\x4d\x5a\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xe0\x00\x00\x00\x0e\x1f\xba\x0e\x00\xb4\x09\xcd\x00\x00\x00\x00\x00\x00\x00\x00"

编译器在编译时将十六进制转换为二进制(一个字符一个字符)。

您需要在运行时hex 字符串转换为bin。 有很多答案比如 C++ convert hex string to signed integer

在这里你将不转换为int而是转换为char

关于c++ - 如何在 C++ 中将 std::string 转换为十六进制字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934520/

相关文章:

swift - 为什么存储子字符串可能会导致 Swift 中的内存泄漏?

c++ - 是否可以检测指向成员函数的指针?

arrays - flatMap 中的 "Cannot convert return expression"里面有一个无意义的表达式

Javascript 树头数组

javascript - 访问 Javascript 中对象数组内的所有属性

string - Swift hashValue 使应用程序崩溃

C++ 链接失败-ld : cannot find [makefile] [gcc/cygwin]

c++ - 内存中的字符串

c++ - 重载决策中的 const 指针

string - Delphi - 在 CASE 语句中使用函数