【问题标题】:String toTwoCompliments(byte n) -> Error: incompatible types: possible lossy conversion from int to byteString toTwoCompliments(byte n) -> 错误:不兼容的类型:从 int 到 byte 的可能有损转换
【发布时间】:2020-03-12 02:00:38
【问题描述】:

我已经编写了一个将字节转换为 TwoCompliments 字符串的方法。但是当我运行代码时,它显示: 不兼容的类型:从 int 到 byte 的可能有损转换

String toTwoCompliments(int n) {
  String binary = "";
  if(n < 0) {
    n = n * (-1) -  1;
    while(n != 0) {
      if(n % 2 == 0) {
      binary = "1" + binary;
      n /= 2;
      } else {
      binary = "0" + binary;
      n /= 2;
      }
    }
    while(binary.length() < 8) {
      binary = "1" + binary;
    }
    return binary;
  } else {
    while(n != 0) {
      binary = n % 2 + binary;
      n /= 2;
    }
    while(binary.length() < 8) {
      binary = "0" + binary;
    }
    return binary;
  }
}

例如,如果我运行 toTwoCompliments(64) 它会返回错误。我的错误在哪里?感谢您的帮助。

【问题讨论】:

  • System.out.println(toTwoCompliments(64)); 在这里打印01000000;你试过干净的构建吗?另外,Integer.toBinaryString(int) 有什么问题?
  • Works fine for me。投票结束是一个不可重现的错误。

标签: java binary byte


【解决方案1】:

对不起,我的意思是用 byte 作为参数,所以正确的代码是

String toTwoCompliments(byte n) {
  String binary = "";
  if(n < 0) {
    n = n * (-1) -  1;
    while(n != 0) {
      if(n % 2 == 0) {
      binary = "1" + binary;
      n /= 2;
      } else {
      binary = "0" + binary;
      n /= 2;
      }
    }
    while(binary.length() < 8) {
      binary = "1" + binary;
    }
    return binary;
  } else {
    while(n != 0) {
      binary = n % 2 + binary;
      n /= 2;
    }
    while(binary.length() < 8) {
      binary = "0" + binary;
    }
    return binary;
  }
}

【讨论】:

  • 既然这对其他人没有帮助,请删除问题。
猜你喜欢
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多