2017-05-16 6 views
1

10進数をその10進数に対応するビットのみが設定されているように16進数形式に変換したいと考えています。例えば、入力0、0が設定され、その結果小数点を16進数に変換するR

> paste("0x", sprintf("%032x",2^(0)),sep="") 
[1] "0x00000000000000000000000000000001" 

および1について、一つはこれは30

> paste("0x", sprintf("%032x",2^(30)),sep="") 
[1] "0x00000000000000000000000040000000" 
まで動作

> paste("0x", sprintf("%032x",2^(1)),sep="") 
[1] "0x00000000000000000000000000000002" 

その結果、設定されるべきビットであるべきであるビット

より大きな値では機能しません。

> 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

私はあなたがsprintf機能を「オーバーロード」していると思います。つまり、型が "%032x"に設定されていて、関数が "%032x"として表示されない値2 ^(32)を渡すと、エラーが発生します。

ここ半関連の質問のカップルだが、私はこれらの正確な重複としてカウントさとは思わない: 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?

関連する問題