所以例如我有这个字符串:
PCHAR ex = "\x55\xEC" etc...
他们是十六进制,所以如果我想在没有" \ x"的情况下写它好像" 55 EC"等等。我必须使用strtol,但是strtol对于我的程序非常慢,我希望我的程序中最快的...
I use strtol like (CHAR)strtol(ex, &ex, 16);
请介意帮助我吗?
答案 0 :(得分:1)
我会做这样的事情:
unsigned long ex[] {0x55, 0xEC};
for (auto i : ex)
std::cout << std::hex << i << " ";
输出为:55 EC
答案 1 :(得分:0)
strtol
将字节字符串转换为长整数;当字符串以0x
作为前缀时,它将字符串视为十六进制数。它不会将\x55
转换为55
。假设中有三个错误:
0x55
转换为55
。不,它会将其转换为85
(十进制)long
或long long
)\x
的十六进制数字。不,这应该0x
,以便将其识别为十六进制值您拥有的内容根本不是strtol
的用例。您必须手动进行转换。
您只需要用空格查找替换所有\x
并修剪生成的字符串以削减前导空格。