首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效地将无符号短整型转换为char*

有效地将无符号短整型转换为char*
EN

Stack Overflow用户
提问于 2011-01-19 05:24:40
回答 5查看 4.4K关注 0票数 6

将无符号短整型转换为char* (例如,将25转换为'25')的有效、可移植的方法是什么?

我希望避免像获取(std::string)字符串这样的事情。在这种情况下,性能很重要,因为这种转换需要快速且频繁地进行。

我正在研究像使用sprintf这样的东西,但我想探索任何和所有的想法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-19 05:26:33

首先,正确地执行它,然后快速执行--只有当您可以确定一段代码不能执行时才进行优化。

snprintf()到一个缓冲区将会做你想做的事情。这是最快的解决方案吗?不用谢。但它是最简单的,它足以让您的代码进入工作状态。从那里开始,如果您发现这些对snprintf()的调用非常费力,需要对其进行优化,那么,也只有在那时,才能找到更快的解决方案。

票数 6
EN

Stack Overflow用户

发布于 2011-01-19 05:34:25

字符串数组,使得

代码语言:javascript
复制
array[25] = "25";
array[26] = "26";

array[255] = "255";

也许吧?您可以编写一个小程序,很容易地为您生成表源代码,然后在您的项目中使用此文件。

编辑:我不明白你所说的不想涉及到字符串的意思。

票数 2
EN

Stack Overflow用户

发布于 2011-01-19 06:48:15

试试这个:

代码语言:javascript
复制
int convert(unsigned short val, char* dest)
{
  int i = 0;
  if (val > 10000)
  {
    dest[i++] = (val / 10000) | 0x30;
    val %= 10000;
  }
  if (val > 1000)
  {
    dest[i++] = (val / 1000) | 0x30;
    val %= 1000;
  }
  if (val > 100)
  {
    dest[i++] = (val / 100) | 0x30;
    val %= 100;
  }
  if (val > 10)
  {
    dest[i++] = (val / 10) | 0x30;
    val %= 10;
  }
  dest[i++] = (val) | 0x30;
  dest[i] = 0;
  return i;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4729224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档