我需要帮助,这是我的任务。如何仅在给定十六进制输入的二进制数中计算1。它给出了二进制中有多少1和0的数字。
package javaapplication3;
import java.util.*;
public class JavaApplication3 {
public static void main(String[] args) {
System.out.println("Enter the string you want printed : ");
Scanner sc = new Scanner(System.in);
String s = sc.next();
int duck = 0;
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes){
int val = b;
for (int i = 0; i < 8; i++){
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
if( val != 1) {
duck++;
}
}
binary.append(' ');
}
System.out.println("'" + s + "' to binary: " + binary);
System.out.println("Number of bit 1 in string: " + duck);
}
}
它给了我一个输出:
输入您要打印的字符串:BABEFACE
'BABEFACE'到二进制:01000010 01000001 01000010 01000101 01000110 01000001 01000011 01000101
字符串中的第1位数:64
建立成功(总时间:10秒)
答案 0 :(得分:0)
嗯
BABEFACE 就像二进制文件一样 1011 1010 1011 1110 1111 1010 1100 1110 给我......
且1的数量应为 24
解决这个问题的方法可能是:
ViewPager
答案 1 :(得分:0)
要检查字符串中的所有“1”,只需使用for
循环进行检查。它将是最快的(与String
函数和正则表达式等相比)。
示例:
String binary = "";
binary = "01000010 01000001 01000010 01000101 01000110 01000001 01000011 01000101";
int counted_Ones = 0;
//# check "ones" in string
for( int i=0; i<binary.length(); i++ )
{ if(binary.charAt(i) == '1') { counted_Ones++; } }
System.out.println("binary: " + binary);
System.out.println("Number of bit 1 in string: " + counted_Ones);
结果(来自System.out.println
):
binary: 01000010 01000001 01000010 01000101 01000110 01000001 01000011 01000101
字符串中的第1位数: 20