我想将十进制数转换为十六进制格式,只设置对应于该十进制数的位。例如,对于输入0,应设置位0并产生
> paste("0x", sprintf("%032x",2^(0)),sep="")
[1] "0x00000000000000000000000000000001"
并且对于1,应设置第一位,结果为
> paste("0x", sprintf("%032x",2^(1)),sep="")
[1] "0x00000000000000000000000000000002"
这可以工作到30
> paste("0x", sprintf("%032x",2^(30)),sep="")
[1] "0x00000000000000000000000040000000"
但不适用于大于
的值> paste("0x", sprintf("%032x",2^(32)),sep="")
Error in sprintf("%032x", 2^(32)) :invalid format '%032x'; use format %f, %e, %g or %a for numeric objects
知道怎么解决这个问题吗?
答案 0 :(得分:0)
我认为你正在“重载”sprintf函数。也就是说,您的类型设置为“%032x”,然后传入值2 ^(32),该函数看不到“%032x”,因此您收到错误。
这里有几个与半相关的问题,但我认为这些问题并不完全相同: why causes invalid format '%d in R?