You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言数制互转疑问:十进制转二进制的实现方法是否正确?

你的十进制转二进制方法是正确的

这个自定义函数的逻辑没问题,核心是利用R内置的intToBits()函数获取整数的二进制位,反转后得到符合阅读习惯的二进制顺序。

验证一下:

  • 你原二进制字符串是"1101000011000001",转十进制是53441
  • 用number2binary(53441)得到的向量,去掉前导零后拼接成字符串就是"1101000011000001",和原字符串完全一致,说明转换是准确的。

不过要注意,intToBits()默认返回32位的二进制位(对应R中32位整数的存储规则),所以不指定noBits参数时,结果会带一堆前导零。如果想直接得到和原字符串长度相同的二进制结果,可以指定noBits=16:

number2binary(53441, noBits=16)
# 输出:[1] 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1

再用paste0拼接就正好是原二进制字符串了。

另外,也可以用更简洁的base包代码实现(不需要自定义函数):

# 直接得到带前导零的32位二进制字符串
paste0(rev(as.numeric(intToBits(53441))), collapse = "")
# 截取后面16位得到目标字符串
substr(paste0(rev(as.numeric(intToBits(53441))), collapse = ""), 17, 32)

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:52:39