题目描述:
实现以一个RGB字符串(如:rgb(0, 50, 255) ),按24位数字对齐后输出对应的 Integer 型数字,r位在高位,b位在低位。
例如:输入“rgb(0, 50, 255)”,输出13055
又如:输入“rgb(192, 192, 192)”,输出12632256
思路:
将r、g、b三个数分别转化成2进制,然后按照 r 为高位, b 为低位的顺序拼接,得出一个24位的二进制字符串,然后在转化成10进制数并返回。
主要考察:
1、使用正则表达式从字符串中获取到准确的十进制数字
2、使用包装类将十进制数转换成二进制字符串
3、使用字符串按顺序拼接,并在使用包装类转化成题目要返回的十进制数
代码(当时赶时间写的,后面没有太多整理,纯粹当做一个上述思路实现的参考):
package com.chensr.test1;
import java.util.Arrays;
import java.util.List;
/**
* @description:
* @author: 淡
* @createDate: 2020-10-25 20:02
* @version: 1.0
*/
public class test {
public static void main (String[] arg){
String dd = "rgb(192, 192, 192)";
test test = new test();
System.out.println(test.change1(dd));
}
public int change1(String dd){
// String dd = "字(2014)第QD0023号";
System.out.println(dd = dd.replaceAll("\\D", "_").replace("_+", "_"));
String[] as = dd.split("_+");
System.out.println(Arrays.asList(as));
int a=0;
int b=0;
int c=0;
List<String> list = Arrays.asList(as);
a = Integer.parseInt(list.get(1));
b = Integer.parseInt(list.get(2));
c = Integer.parseInt(list.get(3));
// System.out.println(Integer.toBinaryString(a));
// System.out.println(Integer.toBinaryString(b));
// System.out.println(Integer.toBinaryString(c));
StringBuffer stringBuffer1 = new StringBuffer();
StringBuffer stringBuffer2 = new StringBuffer();
StringBuffer stringBuffer3 = new StringBuffer();
StringBuffer stringBuffer4 = new StringBuffer();
for(int t = 0; t<8-Integer.toBinaryString(a).length(); t++){
stringBuffer1.append(0);
}
//System.out.println(stringBuffer1.append(Integer.toBinaryString(a)));
for(int t = 0; t<8-Integer.toBinaryString(b).length(); t++){
stringBuffer2.append(0);
}
// System.out.println(stringBuffer2.append(Integer.toBinaryString(b)));
for(int t = 0; t<8-Integer.toBinaryString(c).length(); t++){
stringBuffer3.append(0);
}
// System.out.println(stringBuffer3.append(Integer.toBinaryString(c)));
stringBuffer4.append(stringBuffer1.append(Integer.toBinaryString(a)));
stringBuffer4.append(stringBuffer2.append(Integer.toBinaryString(b)));
stringBuffer4.append(stringBuffer3.append(Integer.toBinaryString(c)));
// System.out.println(stringBuffer4);
return Integer.parseInt(stringBuffer4.toString(),2);
}
}