Binary String ConverteUtil: 자바 문자열 과 바 이 너 리 상호 변환

15919 단어 util
최근 redis 의 bitmap 관련 명령 을 배 울 때 문자열 과 바 이 너 리 변환 을 사 용 했 습 니 다.그래서 자바 로 바 이 너 리 와 문자열 이 서로 바 뀌 는 도구 클래스 를 썼 습 니 다.
방법 서명
방법 설명
public static String toBinaryString(String str)
일반 문자열 을 바 이 너 리 문자열 로 변환 합 니 다.
public static String toString(String binaryStr)
바 이 너 리 문자열 을 일반 문자열 로 변환 합 니 다.
public static int countBitOne(String binaryStr)
바 이 너 리 문자열 의 1 개 수 를 통계 합 니 다.
1. 도구 종류 원본 코드 변환
/**
 *            
 * @Auth zongf
 * @Date 2019-05-07
 */
public class BinaryStringConverteUtil {

    private static final String BIN_SEPARATOR = " ";


    /**
     *             
     * @param str      
     * @return String       
     * @Auth zongf
     * @Date 2019-05-07
     */
    public static String toBinaryString(String str) {

        if (str == null) return null;

        StringBuffer sb = new StringBuffer();

        byte[] bytes = str.getBytes();
        for (byte aByte : bytes) {
            sb.append(Integer.toBinaryString(aByte) + BIN_SEPARATOR);
        }
        return sb.toString();
    }


    /**
     *               
     * @param binaryStr       
     * @return String      
     * @Auth zongf
     * @Date 2019-05-07
     */
    public static String toString(String binaryStr) {

        if (binaryStr == null) return null;

        String[] binArrays = binaryStr.split(BIN_SEPARATOR);


        StringBuffer sb = new StringBuffer();
        for (String binStr : binArrays) {
            char c = binstrToChar(binStr);
            sb.append(c);
        }
        return sb.toString();
    }

    /**
     *          1   
     * @param binaryStr      , :1101
     * @return int
     * @Auth zongf
     * @Date 2019-05-07
     */
    public static int countBitOne(String binaryStr) {
        int cnt = 0;
        if(binaryStr != null) {
            byte[] bytes = binaryStr.getBytes();
            for (byte aByte : bytes) {
                if (aByte==49) {
                    cnt++;
                }
            }
        }
        return cnt;
    }

    /**
     *         int  
     * @param binStr       
     * @return int[]
     * @Auth zongf
     * @Date 2019-05-07
     */
    private static int[] binstrToIntArray(String binStr) {
        char[] temp=binStr.toCharArray();
        int[] result=new int[temp.length];
        for(int i=0;i<temp.length;i++) {
            result[i]=temp[i]-48;
        }
        return result;
    }

    /**
     *          
     * @param binStr       
     * @return char
     * @Auth zongf
     * @Date 2019-05-07
     */
    private static char binstrToChar(String binStr){
        int[] temp=binstrToIntArray(binStr);
        int sum=0;
        for(int i=0; i<temp.length;i++){
            sum +=temp[temp.length-1-i]<<i;
        }
        return (char)sum;
    }

}

2. 테스트
2.1 테스트 사례
@Test
public void test1(){

    String str = "abc";

    //          
    String binaryStr = BinaryStringConverteUtil.toBinaryString(str);

    //   1   
    int cnt = BinaryStringConverteUtil.countBitOne(binaryStr);

    //     
    String newStr = BinaryStringConverteUtil.toString(binaryStr);

    System.out.println("    :" + str);
    System.out.println("      :" + binaryStr);
    System.out.println("1   :" + BinaryStringConverteUtil.countBitOne(binaryStr));
    System.out.println("    :" + newStr);
}

2.2 테스트 출력
    :abc
      :1100001 1100010 1100011
1   :10
    :abc

좋은 웹페이지 즐겨찾기