R中将十进制转换为十六进制

时间:2017-05-16 17:26:44

标签: r

我想将十进制数转换为十六进制格式,只设置对应于该十进制数的位。例如,对于输入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

知道怎么解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为你正在“重载”sprintf函数。也就是说,您的类型设置为“%032x”,然后传入值2 ^(32),该函数看不到“%032x”,因此您收到错误。

这里有几个与半相关的问题,但我认为这些问题并不完全相同: why causes invalid format '%d in R?

hex to string formatting conversion in python

Why does a 32-bit OS support 4 GB of RAM?