![]() |
1
116
编辑:对不起,我应该记得这台机器肯定是非标准的,插了各种非标准的
像
这是旧的(编辑过的)答案
你说得对,默认
当然,你已经知道了,因为你想
使用
例子
输出:
|
![]() |
2
23
作用
|
![]() |
3
12
如果你经常称之为snprintf,那么“只使用snprintf”的建议可能会很烦人。所以,这可能是你想要的:
|
![]() |
4
9
编辑:
我刚刚得知
不仅是
itoa
gcc中缺少这个函数,它不是最方便使用的函数,因为你需要给它提供一个缓冲区。我需要一些可以在表达式中使用的东西,所以我想出了这个:
通常,使用它会更安全
请看示例: http://ideone.com/mKmZVE |
![]() |
5
7
正如Matt J所写
|
![]() |
6
5
以下函数分配刚好足够的内存来保持给定数字的字符串表示,然后使用标准将字符串表示写入此区域
别忘了
注意:由于snprintf复制N-1个字节,我们必须调用snprintf(buf,len+1,“%ld”,N)(而不仅仅是snprintf |
![]() |
7
4
阅读那些以此为生的人的代码会让你走得很远。 看看MySQL的人是怎么做到的。这个源代码非常受欢迎,它将教你更多的东西,而不是到处都能找到的黑客解决方案。 MySQL's implementation of int2str 我在这里提供上述实施;此链接仅供参考,应用于阅读完整的实现。
|
![]() |
8
4
Linux中没有这样的功能。我改用这段代码。
|
![]() |
9
3
我尝试了自己的itoa()实现,它似乎可以在二进制、八进制、十进制和十六进制中工作
|
![]() |
10
2
直接复制到缓冲区:64位整数itoa十六进制:
注意:对于32位机器,将long改为long long。在32位整数的情况下,long转换为int。m是基数。减小基数时,增加字符数(变量i)。增加基数时,减少字符数(更好)。在无符号数据类型的情况下,i只变为16+1。 |
![]() |
11
2
这是Archana解决方案的一个改进版本。它适用于任何基数1-16和数字<=0,它不应该占用内存。
|
![]() |
12
2
像
如果Linux中缺少它,或者代码不想限制可移植性,代码可以自己创建它。
下面是一个没有问题的版本
下面是一个C99或更高版本,可以处理任何基础[2…36]
对于C89及更高版本的兼容代码,将内环替换为
|
![]() |
13
2
glibc内部实现 glibc 2.28有一个内部实现: 它在内部的几个地方都有使用,但我找不到它是否可以暴露或如何暴露。 如果你愿意提取它,至少这应该是一个强大的实现。 这个问题问你如何滚动自己的: How to convert an int to string in C? |
![]() |
14
2
如果你只想打印它们:
|
![]() |
15
2
替换为snprintf的操作尚未完成! 它只涵盖2、8、10、16个碱基,而itoa适用于2到36之间的碱基。 既然我在寻找32进制的替代品,我想我必须自己编写代码了! |
![]() |
16
1
我更喜欢这样: https://github.com/wsq003/itoa_for_linux 这应该是有史以来最快的。出于性能原因,我们使用itoa()而不是sprintf(),因此功能有限的最快itoa(()是合理且值得的。 |
![]() |
17
0
我在RedHat 6和GCC编译器上使用了_itoa(…)。它奏效了。 |
![]() |
18
-5
您可以使用此程序代替sprintf。
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 6 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 6 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 6 月前 |