Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Algorithm_Binary - Fatal编程技术网

Java 将二进制文件从字符串写入文件

Java 将二进制文件从字符串写入文件,java,string,algorithm,binary,Java,String,Algorithm,Binary,我的代码中有一个字符串,它有一堆0和1。现在我想用这个字符串创建一个文件,里面的位是这个字符串的字符。如何执行此操作?此函数将二进制字符串解码为字节数组: static byte[] decodeBinary(String s) { if (s.length() % 8 != 0) throw new IllegalArgumentException( "Binary data length must be multiple of 8"); byte[] data

我的代码中有一个字符串,它有一堆0和1。现在我想用这个字符串创建一个文件,里面的位是这个字符串的字符。如何执行此操作?

此函数将二进制字符串解码为字节数组:

static byte[] decodeBinary(String s) {
    if (s.length() % 8 != 0) throw new IllegalArgumentException(
        "Binary data length must be multiple of 8");
    byte[] data = new byte[s.length() / 8];
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (c == '1') {
            data[i >> 3] |= 0x80 >> (i & 0x7);
        } else if (c != '0') {
            throw new IllegalArgumentException("Invalid char in binary string");
        }
    }
    return data;
}

此函数将二进制字符串解码为字节数组:

static byte[] decodeBinary(String s) {
    if (s.length() % 8 != 0) throw new IllegalArgumentException(
        "Binary data length must be multiple of 8");
    byte[] data = new byte[s.length() / 8];
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (c == '1') {
            data[i >> 3] |= 0x80 >> (i & 0x7);
        } else if (c != '0') {
            throw new IllegalArgumentException("Invalid char in binary string");
        }
    }
    return data;
}

查看诸如AND、OR、SHR和SHL之类的运算符。除此之外,你在问什么?如果您要求的是基础教程,但这不是合适的地点,请查看诸如AND、OR、SHR和SHL之类的操作员。除此之外,你在问什么?如果你想要一个基础教程,这不是合适的地方,@Masious它拒绝包含不能被8整除的位数的字符串,因为你不能在文件中表示这些字符串,因为文件是一个整数字节长,每个字节是8位。但我还是需要把它放在我的文件中。我应该在字符串的开头添加一些“0”吗?@Masious您当然可以,但是转换是有损的,因为它没有完全保留原始字符串。@Masious拒绝包含不可被8整除的位数的字符串,因为您不能在文件中表示这些位数,因为文件的长度是整字节,每个字节是8位,但我还是要把它放到我的文件里。我应该在字符串的开头添加一些“0”吗?@Masious当然可以,但是转换是有损的,因为它不能完全保留原始字符串。