二进制转换为long型十进制

PJ_Richard 2016-04-07 08:47:39
System.out.println(Long.parseLong("1111111111111111111111111111111100000000000000000000000000000000"));
为什么运行不通过?这个值存在啊:-2147483648
...全文
681 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
imfang 2016-04-11
  • 打赏
  • 举报
回复
引用 11 楼 PJ_Richard 的回复:
[quote=引用 10 楼 imfang 的回复:] long ll=Long.parseUnsignedLong("1111111111111111111111111111111100000000000000000000000000000000", 2); System.out.println(ll); 显示: -4294967296 你的值 -2147483648 是错误的!
恩,是我错了,你这个是1.8才能用吗?[/quote] 应该是吧!
PJ_Richard 2016-04-09
  • 打赏
  • 举报
回复
引用 10 楼 imfang 的回复:
long ll=Long.parseUnsignedLong("1111111111111111111111111111111100000000000000000000000000000000", 2); System.out.println(ll); 显示: -4294967296 你的值 -2147483648 是错误的!
恩,是我错了,你这个是1.8才能用吗?
imfang 2016-04-09
  • 打赏
  • 举报
回复
long ll=Long.parseUnsignedLong("1111111111111111111111111111111100000000000000000000000000000000", 2); System.out.println(ll); 显示: -4294967296 你的值 -2147483648 是错误的!
PJ_Richard 2016-04-08
  • 打赏
  • 举报
回复
引用 5 楼 ZhiyouWu的回复:
[quote=引用 2 楼 PJ_Richard 的回复:] [quote=引用 1 楼 ZhiyouWu 的回复:] 这个是二进制转十进制的方法?这个方法只能将后面的字符串用Long类型表示出来,比如说后面的数字串为“1123”,则输出为1123;你这里出现的异常是因为你的数用long类型输出时,已经超越了long类型的范围!!!并不能将二进制转化为十进制。
嗦嘎,那我写成 System.out.println(Long.parseLong("1111111111111111111111111111111100000000000000000000000000000000",2)) 也不行?二进制怎么转十进制,而且是long型的; [/quote] long'后面加个2就可以转???楼主你百度看看别人写的二进制转十进制的方法[/quote] 你是说自己写吧!!我想直接用!感觉3楼正解!
li4c 2016-04-08
  • 打赏
  • 举报
回复
public class Bits {

  public static BitSet convert(long value) {
    BitSet bits = new BitSet();
    int index = 0;
    while (value != 0L) {
      if (value % 2L != 0) {
        bits.set(index);
      }
      ++index;
      value = value >>> 1;
    }
    return bits;
  }

  public static long convert(BitSet bits) {
    long value = 0L;
    for (int i = 0; i < bits.length(); ++i) {
      value += bits.get(i) ? (1L << i) : 0L;
    }
    return value;
  }
}
li4c 2016-04-08
  • 打赏
  • 举报
回复
你这明明是字符串转10进制
ZhiyouWu 2016-04-08
  • 打赏
  • 举报
回复
引用 5 楼 ZhiyouWu 的回复:
[quote=引用 2 楼 PJ_Richard 的回复:] [quote=引用 1 楼 ZhiyouWu 的回复:] 这个是二进制转十进制的方法?这个方法只能将后面的字符串用Long类型表示出来,比如说后面的数字串为“1123”,则输出为1123;你这里出现的异常是因为你的数用long类型输出时,已经超越了long类型的范围!!!并不能将二进制转化为十进制。
嗦嘎,那我写成 System.out.println(Long.parseLong("1111111111111111111111111111111100000000000000000000000000000000",2)) 也不行?二进制怎么转十进制,而且是long型的; [/quote] 楼主你百度看看别人写的二进制转十进制的方法,你这个数也太长了,建议先拿小的数进行测试
ZhiyouWu 2016-04-08
  • 打赏
  • 举报
回复
引用 2 楼 PJ_Richard 的回复:
[quote=引用 1 楼 ZhiyouWu 的回复:] 这个是二进制转十进制的方法?这个方法只能将后面的字符串用Long类型表示出来,比如说后面的数字串为“1123”,则输出为1123;你这里出现的异常是因为你的数用long类型输出时,已经超越了long类型的范围!!!并不能将二进制转化为十进制。
嗦嘎,那我写成 System.out.println(Long.parseLong("1111111111111111111111111111111100000000000000000000000000000000",2)) 也不行?二进制怎么转十进制,而且是long型的; [/quote] long'后面加个2就可以转???楼主你百度看看别人写的二进制转十进制的方法
PJ_Richard 2016-04-07
  • 打赏
  • 举报
回复
引用 3 楼 imfang 的回复:
System.out.println(Long.parseLong("0111111111111111111111111111111100000000000000000000000000000000",2)); System.out.println(Integer.parseInt("-7fff0000",16)); Integer、Long都是有符号的数据,直接转换二进制,它认为转换的值是正的,最高位不能是1,若表示负数,可直接加负号。
那如果我收到一个负数的二进制,64位,第一位为1,我要转换为十进制,只能将二进制数-1,再取反,然后才能用parseLong来转换吗?
imfang 2016-04-07
  • 打赏
  • 举报
回复
System.out.println(Long.parseLong("0111111111111111111111111111111100000000000000000000000000000000",2)); System.out.println(Integer.parseInt("-7fff0000",16)); Integer、Long都是有符号的数据,直接转换二进制,它认为转换的值是正的,最高位不能是1,若表示负数,可直接加负号。
PJ_Richard 2016-04-07
  • 打赏
  • 举报
回复
引用 1 楼 ZhiyouWu 的回复:
这个是二进制转十进制的方法?这个方法只能将后面的字符串用Long类型表示出来,比如说后面的数字串为“1123”,则输出为1123;你这里出现的异常是因为你的数用long类型输出时,已经超越了long类型的范围!!!并不能将二进制转化为十进制。
嗦嘎,那我写成 System.out.println(Long.parseLong("1111111111111111111111111111111100000000000000000000000000000000",2)) 也不行?二进制怎么转十进制,而且是long型的;
ZhiyouWu 2016-04-07
  • 打赏
  • 举报
回复
这个是二进制转十进制的方法?这个方法只能将后面的字符串用Long类型表示出来,比如说后面的数字串为“1123”,则输出为1123;你这里出现的异常是因为你的数用long类型输出时,已经超越了long类型的范围!!!并不能将二进制转化为十进制。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧