r - 在R中将2s补码/有符号二进制转换为int
问题描述
我从 ADC IC 接收 16 位 2s 补码或带符号二进制。当我收到数据时,它看起来像这样
时间戳、IP、频率、传感器、数据
132493498543616929、10.0.0.236、600.000、321、-8739
132493498543626902, 10.0.0.236, 600.000, 321, -8739
132493498543636875, 10.0.0.236, 600.000, 321, -8739
132493498543636875, 10.0.0.236, 600.000, 321, -13108
132493498543656828, 10.0.0.236, 600.000, 321, -8739
132493498543666795, 10.0.0.236, 600.000, 321, -21846
132493498543676768, 10.0.0.236、600.000、321、-21846
132493498543676768、10.0.0.236、600.000、321、
-21846 132493498543686741、10.0.0.236、600.0460、31
我想将其转换为签名二进制我的最小可重现代码如下
library(binaryLogic)
as.binary(-21846, signed=TRUE, logic=FALSE)
[1] 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
这给了我我想要的二进制值,但是,当我将它用作
Data_as_Binary <- as.binary(-21846, signed=TRUE, logic=FALSE)
Data_as_Binary
TRUE
FALSE
TRUE
FALSE
TRUE
FALSE
我有 16000 多个值需要在数据框中进行转换,当我使用 mutate 或 tidyverse 中的任何内容时,它会返回一个列表 如何将其折叠成单个变量
,将其转换为十六进制没问题,但我必须将其转换为二进制所以现在我已经把它变成了二进制,但我需要在最低有效位上加一个 1 我如何在数据帧中做到这一点?谢谢阿曼达
解决方案
这是我自己想出的,给了我想要的
Data_as_bianary<- as.binary(RF_PWR_OFF_600$Data, signed = TRUE, size=2)
df<-as.data.frame(Data_as_bianary)
df <- as.data.frame(matrix(unlist(Data_as_bianary), ncol = 16))
df_2<-1*df
df_3<-(!df_2)*1
RF_PWR_OFF_600$DAta_to_bin <- apply( df_3[ , 1:16 ] , 1 , paste , collapse = "" )
RF_PWR_OFF_600 <- RF_PWR_OFF_600%>%
select(DAta_to_bin) %>%
mutate_if(is.character,as.numeric)
推荐阅读
- javascript - 如何在反应中获取具有输入值的div的innerText?
- python - Python:如何在当前光标位置上方打印 n 行(当前行上方)
- kubernetes - 如何使用 helm 检查所需数量的 pod 是否已启动并在 init 容器中处于活动状态
- python - 我如何才能删除列表中的第一次出现?
- svn - (乌龟) SVN Merge from foreign repository 不兼容mergeinfo修改
- oracle-cloud-infrastructure - 使用 oci-java-sdk 获取存储桶或对象的 URL
- python - discord python(带有int检查的bot.command)
- paypal - 贝宝加:REQUIRED_SCOPE_MISSING
- azure - 使用 PowerShell 的 Azure 顾问建议
- python-3.x - 对象创建的 Python 补丁不起作用