Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将非整数十进制数转换为二进制数_R_Binary_Numeric - Fatal编程技术网

R 将非整数十进制数转换为二进制数

R 将非整数十进制数转换为二进制数,r,binary,numeric,R,Binary,Numeric,数据帧输入(DF) 所需的二进制结果(16位) 我试过一个函数 intTobits rawTobits 但是对我来说不起作用中详细讨论了整数十进制数到二进制数的转换。非整数是另一个问题 对于浮点十进制数的二进制表示,可以尝试以下函数: floatToBin <- function(x){ int_part <- floor(x) dec_part <- x - int_part int_bin <- R.utils::intToBin(int_part)

数据帧输入(DF)

所需的二进制结果(16位)

我试过一个函数

intTobits
rawTobits
但是对我来说不起作用

中详细讨论了整数十进制数到二进制数的转换。非整数是另一个问题

对于浮点十进制数的二进制表示,可以尝试以下函数:

floatToBin <- function(x){
  int_part <- floor(x)
  dec_part <- x - int_part
  int_bin <- R.utils::intToBin(int_part)
  dec_bin <- stringr::str_pad(R.utils::intToBin(dec_part * 2^31), 31, pad="0")
  sub("[.]?0+$", "", paste0(int_bin, ".", dec_bin)) 
}

floatToBin在这种情况下,只使用整数,但这里我们有十进制分数的数值,我认为没有任何预先存在的函数。你必须自己写。
floatToBin <- function(x){
  int_part <- floor(x)
  dec_part <- x - int_part
  int_bin <- R.utils::intToBin(int_part)
  dec_bin <- stringr::str_pad(R.utils::intToBin(dec_part * 2^31), 31, pad="0")
  sub("[.]?0+$", "", paste0(int_bin, ".", dec_bin)) 
}
nums <- c(123.213, 4343.344, 3434.43255, 422.45, 34534)
sapply(nums, floatToBin)
#[1] "1111011.0011011010000111001010110000001"     
#[2] "1000011110111.010110000001000001100010010011"
#[3] "110101101010.0110111010111011100110001100011"
#[4] "110100110.0111001100110011001100110011001"   
#[5] "1000011011100110"