两个字符串
String s1="11101001010100100101001011010010101111"[十进制度超过30位]
String s2="10001001010111111111001011010010101010"
java的
int型范围是-2147483648~2147483647(二进制有32位)
long型范围是-9223372036854775808~9223372036854775807[十进制20位左右](二进制有64位)请问:
在java里有办法使s1和s2分别转换为二进制的
11101001010100100101001011010010101111和
10001001010111111111001011010010101010,然后进行按位与(|)运算吗?假设1,0组合的字符串位40位我开始想将s1,s2想通过Interger.parseInt()或Long.valueOf()方法,转化为int型或long型的十进制数,然后在将十进制数转换为二进制,可是位数太多,可能超过int或long的表示范围,是这样吗?弄错了,如果"11101001010100100101001011010010101111"算是十进制的书,好象有个Interger.parseInter(s1,2)可以将十进制转化为二进制,可转换的数肯定不是11101001010100100101001011010010101111,我想得到二进制数11101001010100100101001011010010101111(说到底我的意思是将40位的两个01组合字符串,按照他们的01组合进行二进制的按位与,然后将二进制按位与运算结果又以字符串形式覆盖第一个字符串)
有谁能帮帮我啊...

解决方案 »

  1.   

    java里面有专门处理大数字的类和方法的.1.5以上版本
      

  2.   

    是BigInteger吧,s1="01110"
    我用BigInteger=new BigInteger(s1,2);可以将字符串"01110"转换成二进制数1110,可是把前面的零去掉了,有什么办法可以不把那个0去掉吗?假如也是要以"01110"字符串结果返回值,怎么去补0呢?,更糟的是我的s1不是确定值,有时候第一位是"1",有不存在上述情况,我该怎么办呢?