用于将无符号长整数转换为字符串的缓冲区大小

阿德纳·佐兰

在提及的问题,答案在这里:我可以用这个方法,使该解决方案将是平台无关的。

char *buff = (char*) malloc(sizeof(unsigned long)*8);
sprintf(buff, "%lu", unsigned_long_variable);

在这里,我得到了缓冲区长度的值,因为它与无符号long变量相似。这种方法正确吗?

开发太阳能

您想知道需要多少个字符才能表示最大的字符unsigned long正确的?

为此,您正在尝试计算最大可能值unsigned long

sizeof(unsigned long)*8

这在几种方面都是错误的。对于1,sizeof返回的倍数char,而不必是8位。您应该改为CHAR_BIT(from <limits.h>相乘但这并不是必须的,因为相同的标头确实已经提供了最大的可能值UCHAR_MAX

然后,您就犯了一个错误:您的计算给出了以位为单位的整数表示的大小想要的是以字符为单位的字符串表示形式的大小这可以通过(from 函数来实现unsigned long log10()<math.h>

log10( UCHAR_MAX )

这将为您提供一个double值,值指示中的(十进制)位数UCHAR_MAX这将是一小部分,你需要一轮向上(1)(ceil()做这行你)。

因此:

#include <math.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
    char * buff = malloc( ceil( log10( UCHAR_MAX ) ) + 1 );
    //...
}

总而言之,这是很狡猾的(我在写出来的时候犯两个错误,可耻的是我-如果您在使用时犯了错误,可耻的是您)。而且,您需要将数学库用于snprintf( NULL, ... )可以更轻松地为您完成的工作,如所链接的“问答”所示。


(1):log10( 9999 )给出3.9999565...4个数字号码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到列表

来自分类Dev

强制转换为Unicode:需要字符串或缓冲区,找到标记

来自分类Dev

将字节缓冲区转换为UTF8字符串

来自分类Dev

将固定大小的缓冲区(字节数组)转换为字符串

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文件

来自分类Dev

如何将节点缓冲区转换为类似console.log show的字符串

来自分类Dev

如何将字符串转换为二进制缓冲区?

来自分类Dev

TypeError:强制转换为Unicode,需要字符串或缓冲区,找不到NoneType

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到int

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文件(open()函数)

来自分类Dev

Python TypeError:强制转换为Unicode:需要字符串或缓冲区,找到元组

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到ResultSet

来自分类Dev

如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

来自分类Dev

将字节的字符串转换为无符号的int

来自分类Dev

JavaScript-将数组缓冲区转换为字符串

来自分类Dev

如何将十六进制字符缓冲区转换为ASCII字符串[C]

来自分类Dev

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到了PosixPath

来自分类Dev

即使导致缓冲区溢出,将int转换为字符串仍然有效

来自分类Dev

在perl中将JSON缓冲区转换为字符串

来自分类Dev

Python MQTT:TypeError:强制转换为Unicode:需要字符串或缓冲区,发现布尔

来自分类Dev

如何将节点缓冲区转换为类似console.log show的字符串

来自分类Dev

强制转换为Unicode:需要字符串或缓冲区,找到列表

来自分类Dev

将无符号字符转换为字符串时,缓冲区的大小发生变化

来自分类Dev

如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

来自分类Dev

如何以优雅有效的方式将无符号/有符号整数/长整数转换为 C 字符串?

来自分类Dev

而将字符缓冲区转换为字符串是需要 strdup

来自分类Dev

如何将数据 URI 转换为缓冲区(带二进制的字符串)?

来自分类Dev

将缓冲区从数据库转换为字符串

来自分类Dev

将 NodeJS 缓冲区转换为整数

Related 相关文章

  1. 1

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到列表

  2. 2

    强制转换为Unicode:需要字符串或缓冲区,找到标记

  3. 3

    将字节缓冲区转换为UTF8字符串

  4. 4

    将固定大小的缓冲区(字节数组)转换为字符串

  5. 5

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文件

  6. 6

    如何将节点缓冲区转换为类似console.log show的字符串

  7. 7

    如何将字符串转换为二进制缓冲区?

  8. 8

    TypeError:强制转换为Unicode,需要字符串或缓冲区,找不到NoneType

  9. 9

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到int

  10. 10

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到文件(open()函数)

  11. 11

    Python TypeError:强制转换为Unicode:需要字符串或缓冲区,找到元组

  12. 12

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到ResultSet

  13. 13

    如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

  14. 14

    将字节的字符串转换为无符号的int

  15. 15

    JavaScript-将数组缓冲区转换为字符串

  16. 16

    如何将十六进制字符缓冲区转换为ASCII字符串[C]

  17. 17

    TypeError:强制转换为Unicode:需要字符串或缓冲区,找到了PosixPath

  18. 18

    即使导致缓冲区溢出,将int转换为字符串仍然有效

  19. 19

    在perl中将JSON缓冲区转换为字符串

  20. 20

    Python MQTT:TypeError:强制转换为Unicode:需要字符串或缓冲区,发现布尔

  21. 21

    如何将节点缓冲区转换为类似console.log show的字符串

  22. 22

    强制转换为Unicode:需要字符串或缓冲区,找到列表

  23. 23

    将无符号字符转换为字符串时,缓冲区的大小发生变化

  24. 24

    如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

  25. 25

    如何以优雅有效的方式将无符号/有符号整数/长整数转换为 C 字符串?

  26. 26

    而将字符缓冲区转换为字符串是需要 strdup

  27. 27

    如何将数据 URI 转换为缓冲区(带二进制的字符串)?

  28. 28

    将缓冲区从数据库转换为字符串

  29. 29

    将 NodeJS 缓冲区转换为整数

热门标签

归档