编辑代码

void main() {
    int an=1;
  string hex='3FCBD07D';
   hex = hex.replaceAll(RegExp(r"\s+"), "");

    if (hex == "") {
         print("空");
    }
    if (hex == "00000000") {
         print("0");
    }
    if ((hex.length > 8) || (hexToInt(hex).isNaN)) {
      print("Error");
    }
    if (hex.length < 8) {
      hex = fillString(hex, "0", 8, true);
    }

    hex = hexToInt(hex).toRadixString(2);
    hex = fillString(hex, "0", 32, true);

    var s = hex.substring(0, 1);
    var e = hex.substring(1, 9);
    var m = hex.substring(9);

    int ie = int.parse(e, radix: 2) - 127;

    m = "1" + m;
    if (ie >= 0) {
      m = m.substring(0, ie + 1) + "." + m.substring(ie + 1);
    } else {
      m = "0." + fillString(m, "0", m.length - ie - 1, true);
    }
    if (m.indexOf(".") == -1) {
      m = m + ".0";
    }

    var a = m.split(".");
    var mi = int.parse(a[0], radix: 2);
    double mf = 0;

    for (var i = 0; i < a[1].length; i++) {
      mf += (int.parse(a[1].substring(i, i + 1)) * math.pow(2, -(i + 1)));
    }
    m = (mi + mf).toStringAsFixed(an);

    if (s == "1") {
      m = (0 - double.parse(m)).toStringAsFixed(an);
    }
    print(m);
}
static fillString(String t, String c, int n, bool b) {
    if ((t == "") || (c.length != 1) || (n <= t.length)) {
      return t;
    }
    var l = t.length;
    for (var i = 0; i < n - l; i++) {
      if (b == true) {
        t = c + t;
      } else {
        t += c;
      }
    }
    return t;
  }