功能很慢

时间:2014-11-05 07:12:05

标签: c++ strtol

对于我的程序来说,strtol非常慢,我希望它非常快

所以例如我有这个字符串:

PCHAR ex = "\x55\xEC" etc...

他们是十六进制,所以如果我想在没有" \ x"的情况下写它好像" 55 EC"等等。我必须使用strtol,但是strtol对于我的程序非常慢,我希望我的程序中最快的...

I use strtol like (CHAR)strtol(ex, &ex, 16);

请介意帮助我吗?

2 个答案:

答案 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(十进制)
  • 它将转换字符串中的多个数字。不,它只会将字符串中的一个数字转换为longlong long
  • 将采用格式为\x的十六进制数字。不,这应该0x,以便将其识别为十六进制值

您拥有的内容根本不是strtol的用例。您必须手动进行转换。

您只需要用空格查找替换所有\x并修剪生成的字符串以削减前导空格。