gpt4 book ai didi

java - 使用输入分割二进制并忽略Java中二进制字符串的恒定长度

转载 作者:行者123 更新时间:2023-12-02 11:31:19 25 4
gpt4 key购买 nike

我想将二进制文件与输入分开。我尝试用输入“6”进行除法,所以出现错误。因为二进制字符串的长度不是6的倍数。

结果必须显示最后一个二进制,即使不是六的倍数。

我的代码

static String s="";

public static String countBit(String message)
{
int k = Integer.parseInt(Test2.s);
String result="";
long m=0L;
for(int i = 0; i < message.length(); i += k)
{
result += message.substring(i, i + k) + " ";
long n = Long.parseLong(message.substring(i, i+k), 2);
m = n;
System.out.print(m+" ");
}
return result;
}

public static void main(String[] args) throws IOException {
String message = "0101100010000100011000000100010000010000010000000000000001101101";

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

System.out.print("Input bit split = ");
s=br.readLine();
System.out.println("\nBinary = "+countBit(message));
}

当我输入按 8 分割的位时,它会显示每个二进制和十进制。当我尝试输入 6 时,出现错误,因为二进制字符串不是 6 的倍数。

输出必须是这样的:

22 8 17 32 17 1 1 0 0 6 13

二进制

010110 001000 010001 100000 010001 000001 000001 000000 000000 000110 1101

最佳答案

只是代码中的 for 循环:

for(int i = 0; i < message.length(); i += k) 
{
result += message.substring(i, Math.min(i + k, message.length() - 1)) + " ";
long n = Long.parseLong(message.substring(i, Math.min(i + k, message.length() - 1)), 2);
m += n;
System.out.print(n+" ");
}

使用 Math.min(i + k, message.length() - 1) 确保它不会超出范围。此外,将 System.out 更改为打印 n 而不是 m

关于java - 使用输入分割二进制并忽略Java中二进制字符串的恒定长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49285266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com