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

如何在Dart中将十进制数转换为7位补零的二进制数?

问题:十进制转7位固定长度二进制缺失前置零

需要将十进制数转换为7位固定长度的二进制数,例如十进制数11对应的二进制应为0001011。现有一段Dart代码无法满足需求:

String dec2bin(int dec) {
  var bin = '';
  while (dec > 0) {
    bin = (dec % 2 == 0 ? '0' : '1') + bin;
    dec ~/= 2;
  }
  return bin;
} 

这段代码返回的是1011,会自动去掉前置零,如何修改才能得到固定7位的二进制字符串?


解决方案

方法1:使用字符串填充补零

直接在原代码的返回环节,用padLeft方法将结果字符串填充至7位,不足的左侧补0:

String dec2bin(int dec) {
  var bin = '';
  while (dec > 0) {
    bin = (dec % 2 == 0 ? '0' : '1') + bin;
    dec ~/= 2;
  }
  // 左侧补0,确保总长度为7位
  return bin.padLeft(7, '0');
}

调用dec2bin(11)会返回0001011,完全符合需求。

方法2:直接生成7位二进制字符串

从最高位(26=64)到最低位(20=1)逐位计算,直接构建7位结果,避免后续补零操作:

String dec2bin7(int dec) {
  String bin = '';
  // 遍历7位的每一位(从第6位到第0位)
  for (int i = 6; i >= 0; i--) {
    // 右移i位后与1按位与,得到当前位的0/1值
    int bit = (dec >> i) & 1;
    bin += bit.toString();
  }
  return bin;
}

这种方式天生生成7位字符串,比如dec2bin7(0)返回0000000,dec2bin7(127)返回1111111,完全覆盖7位二进制的取值范围。

额外提示

7位二进制仅能表示0~127范围内的十进制数,若输入数值超出该范围:

  • 方法1会返回完整的二进制字符串(长度超过7位),此时可添加dec = dec % 128来截断至7位有效范围;
  • 方法2会自动取数值的低7位结果,等同于dec % 128的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:05:25