【发布时间】:2012-02-27 21:45:33
【问题描述】:
我有一个标准:字符串。我想找到十六进制的模式“0x789c”。 根据stackoverflow中的另一个线程,我已经这样做了:
int nPosD = buffer.find("\x78\x9C");
尝试过
int nPosD = buffer.find(std::string("\x78\x9C"),2);
不成功!返回 -1!我的模式 0x789c 在我的字符串中!我已经用 HexEdit 软件测试过了。
有人对此有想法吗?
非常感谢:)
最好的问候,
【问题讨论】:
-
0x789c 在英特尔处理器中是 0x9c 0x78,而不是 0x78 0x9c
-
应该可以,您确定您的十六进制编辑软件没有以小端(反向字节顺序)显示您的字节吗?
-
您的第一个错误是将二进制缓冲区写入字符串。
std::string的目的是存储 text。如果您有二进制数据,请使用std::vector<unsigned char>。 -
是的,这是我的十六进制编辑器中的小端视图!谢谢约阿希姆·伊萨克森!
标签: c++ string stl hex design-patterns