解析字符串,每八位的二进制转为十进制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starjuly/article/details/72764842
 
public class Test {
	
	
	public static void main(String[] args) {
		String string = "1100000100101001110110010";
		String result = getDecimal(string);
		System.out.println(result);
	}

	private static String getDecimal(String string) {
		char[] ca = string.toCharArray();
		//拼接2进制 每隔8位添加一个空格
		StringBuilder sb = new StringBuilder();
		for (int j = 0; j < ca.length; j++) {
			sb.append(ca[j]);
			if ((j + 1) % 8 == 0) {
				sb.append(" ");
			}
		}

		StringBuilder result = new StringBuilder();
		String[] split = sb.toString().split(" ");
		for (int i = 0; i < split.length; i++) {
			int btd = binaryToDecimal(split[i].toString());
			result.append(btd + " ");
		}
		return result.toString();
	}

	//二进制转成10进制
	private static int binaryToDecimal(String sb) {
		char[] ca1 = sb.toCharArray();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		for (int i = 0; i < ca1.length; i++) {
			map.put(i,Integer.parseInt(String.valueOf(ca1[i])));
		}
		int sum = 0;
		for (int i = 0; i < ca1.length; i++) {
			int value = (int)map.get(i);
			if(i == 7){
				sum += value;
			}
			if(i == 6){
				sum += value *2;
			}
			if(i == 5){
				sum += value *2*2;
			}
			if(i == 4){
				sum += value *2*2*2;
			}
			if(i == 3){
				sum += value *2*2*2*2;
			}
			if(i == 2){
				sum += value *2*2*2*2*2;
			}
			if(i == 1){
				sum += value *2*2*2*2*2*2;
			}
			if(i == 0){
				sum += value *2*2*2*2*2*2*2;
			}
		}
		return sum;
	}
	
}

猜你喜欢

转载自blog.csdn.net/starjuly/article/details/72764842
今日推荐