在Linux上运行R(请参阅下面的输出以下版本) 我通过sprintf转换为十六进制来体验奇怪的行为。 有人知道什么可以解释这个吗? (即第一次转换正常,第二次返回有关数字的错误):
> sprintf("%x",2109440182)
[1] "7dbb80b6"
> sprintf("%x",2151028214)
Error in sprintf("%x", 2151028214) :
invalid format '%x'; use format %f, %e, %g or %a for numeric objects
版本 _ 平台x86_64-pc-linux-gnu 拱x86_64 os linux-gnu system x86_64,linux-gnu 状态 专业3 小0.1 2013年 05月 第16天 svn rev 62743 语言R. version.string R版本3.0.1(2013-05-16) 昵称Good Sport
谢谢,迈克尔
答案 0 :(得分:3)
gcc:format'%x'需要一个类型为'unsigned int'的参数,但参数2的类型为'long int'。
我猜这个数字大于unsigned int。我系统中的最大范围是2147483648,
所以这是正确的:
printf("%x\n", 2147483647);