2020-10-26 闲鱼接到一单编程题,做下来发现对一些包装类的使用,还不是很熟练,特做存档

题目描述:

实现以一个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);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值