两个字符串
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.   

    按2进制转Long,然后按位运算,最后再转成字符串long l1=Long.parseLong("11101001010100100101001011010010101111",2);
    long l2=Long.parseLong("10001001010111111111001011010010101010",2);l1=l1 | l2;//这里应该是按位或
    String result=Long.toString(l1,2);
      

  2.   

    另外还有一个解决方案是转StringBuffer
    然后根据字符来运算StringBuffer sb1=new StringBuffer("11101001010100100101001011010010101111");
    StringBuffer sb2=new StringBuffer("10001001010111111111001011010010101010"); for(int i=sb1.length()-1;i>=0;i--)//假设2个字符串长度相同,长度不同的话酌情修改
    {
    char ch1=sb1.charAt(i);
    char ch2=sb2.charAt(i);
    ch1=(ch1=='1' || ch2=='1')?'1':'0';
    sb1.setCharAt(i,ch1);
    }
    String result=sb1.toString();