Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将二进制转换为小数和字符_Java - Fatal编程技术网

Java 将二进制转换为小数和字符

Java 将二进制转换为小数和字符,java,Java,我想将二进制转换成小数和如下字符: 11010 --> 1101 + 0(parity bit) -->decimals= 11 --> char ";" 10101 --> 1010 + 1 -->decimals= 5 --> char "5" . . public class stringek { String bitek = "1101010101001000001000001"; String[] bit

我想将二进制转换成小数和如下字符:

11010 --> 1101 + 0(parity bit) -->decimals= 11 --> char ";"
10101 --> 1010 + 1             -->decimals= 5  --> char "5"
.
.

public class stringek {

    String bitek = "1101010101001000001000001";
    String[] bits;
    String four;
    char par;
    int parity;
    String digits;
    int n = 0;
    int b;
    int kurens;
    int decimalis;
    int digit;

    public stringek() {
        this.kurens = 0;
        bits = new String[200];
        for (int i = 0; i < 25; i += 5) {
            bits[n] = bitek.substring(i, i + 5);
            n++;
        }
        for (int i = 0; i < n; ++i) {
            int j = 0;
            four = bits[i].substring(j, j + 4);
            for (int p = 0; p < 4; ++p) {
                b = Integer.parseInt(four.substring(p));
                kurens += b;
            }
            par = bits[i].charAt(j+4);
            //System.out.print(par);
            parity = par-'0';
            decimalis = Integer.parseInt(four, 2);
            digit = decimalis + 48;
            if ((kurens + parity) % 2 == 0) {
                System.out.println("Binarys: "+four+"-"+par+" = "+"'"+(char)digit+"'"+" Decimalis:"+decimalis+"  Parity <INVALID>  ");
            }
            else{
                System.out.println("Binarys: "+four+"-"+par+" = "+"'"+(char)digit+"'"+" Decimalis:"+decimalis+"  Parity <VALID>  ");
            }
        }
    }

}
但我的计划的结果是:

Binarys: 1101-0 = '=' Decimalis:13  Parity <INVALID>  
Binarys: 1010-1 = ':' Decimalis:10  Parity <VALID>  
Binarys: 0010-0 = '2' Decimalis:2  Parity <INVALID>  
Binarys: 0001-0 = '1' Decimalis:1  Parity <INVALID>  
Binarys: 0000-1 = '0' Decimalis:0  Parity <VALID>
有人能帮我解决吗?我不得不说,因为在我的例子中,所有的奇偶校验都是有效的,但我不知道为什么这里的一些奇偶校验是无效的,我知道,如果给我这个结果,那么结果是无效的,但是我想知道如何在有效时解析为有效,在真正无效时解析为无效。谢谢

您不会使用String.split或StringTokenizer

使用递增5的for循环,检查字符串的长度 使用String.substring提取5个字符串。 要计算所需目标数组的长度,需要将字符串长度除以5。更好的方法是使用列表。

使用对象,特别是固定长度。。。方法,该方法完全执行您要执行的操作

Splitter splitter = Splitter.fixedLength(5);
Iterable<String> tokens= splitter.split(myVeryLongString);

我想要…我想要。。。你做了什么?答案是:你不会使用你列出的任何东西。我想让我的文章自己写,让我的论文自己编造。不幸的是,在这方面做得不太好:在任何情况下,你都可能想看一看:请将其编辑到你的问题中,并解释为什么它不起作用。我会取消我的否决票。出于好奇,你能用split和lookahead吗?@SotiriosDelimanolis你相信你能,我不得不玩它。。。但是除了作为一个学习练习,我不明白你为什么要这样做。对于这个问题,你可以获得backing char[]并使用System.arraycopy,然后创建新字符串,或者。。。其他任何事情:@user3062456它通过将间隔值传递给5来帮助您我的朋友尝试它
Splitter splitter = Splitter.fixedLength(5);
Iterable<String> tokens= splitter.split(myVeryLongString);