-3

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

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

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

它们是十六进制的,所以如果我想在没有“\x”的情况下将它写成“55 EC”等。我必须使用 strtol,但 strtol 对我的程序来说非常慢我想要我的程序中最快的..

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

介意帮我吗?

4

2 回答 2

1

我会做这样的事情:

unsigned long ex[] {0x55, 0xEC};

  for (auto i : ex)
    std::cout << std::hex << i << " ";

输出是:55 EC

于 2014-11-05T07:29:20.387 回答
0

你在尝试什么?strtol将字节字符串转换为长整数;当字符串具有0x前缀时,它将字符串视为十六进制数。它不会转换\x5555. 假设中的三个错误:

  • 它将转换0x5555. 不,它会将其转换为85(十进制)
  • 它将转换字符串中的多个数字。不,它只会将字符串中的一个数字转换为 a longor long long)
  • 它将采用格式的十六进制数\x。不,这应该是0x让它将其识别为十六进制值

你所拥有的根本不是一个用例strtol。您必须手动进行转换。

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

于 2014-11-05T07:19:35.197 回答