[네트워크 프로그래밍1]2진바이너리티 view를 이용하여 문자열 분석하기 및 자바 인코딩 방식 조사
류명운
·2015. 4. 5. 15:46
2진 Binary Viewer를 사용하여 아스키코드 데이터의 2진 코드 확인하기.hwp
2진 Binary Viewer를 사용하여 아스키코드 데이터의 2진 코드 확인하기
- 1. Binary Viewer를 사용하여 데이터의 2진 코드 확인
- 2. ASCII Code Table
- 3. Java에서의 인코딩 방식
1. Binary Viewer를 사용하여 데이터의 2진 코드 확인
ⓐ : ⓑ데이터에 해당하는 2진 바이너리티 데이터를 16진수(hex)로 표현 ⓑ : ASCII 데이터(char 형) ⓒ : ⓑ데이터를 2진 바이터리티 데이터로 변경한 값들의 표 ① : Hexadecimal(16진법)으로 표현 ② : Binary(2진법)로 표현 ③ : Octal(8진법)로 표현 ④ : Unsigned Integer(부호 없는 정수)로 표현 ⑤ : Signed Integer(부호 붙임 정수)로 표현 ⑥ : Unicode(유니코드)로 표현 ⑦ : ASCII(아스키코드)로 표현 |
2. Ascii Table
* Dex(decimal):10진법, Hx(hexadecimal):16진법, Oct(octal):8진법, Char:문자 [출처 : http://www.asciitable.com/] |
3. Java에서의 인코딩 방식
종류 -> EUC-KR, KSC5601, ISO-8859-1, UTF-8, ASCII
각 인코딩 방식에 따른 테스트 스크린샷 |
|
인코딩 방식에 따른 테스트. java 소스코드 |
import java.io.UnsupportedEncodingException; import java.util.ArrayList;
public class EncodingUtil_js { public static String[] charsets = new String[]{"EUC-KR", "KSC5601", "ISO-8859-1", "UTF-8", "ASCII"};
public static void printStringToByte(String str, String charset){ try { byte string_bytes[] = str.getBytes(charset); for(int i = 0 ; i < string_bytes.length; i++){ if(i % 8 == 0)System.out.println(); System.out.printf("%10s", string_bytes[i]); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //문자열과, 캐릭터셋을 받아 , 해당문자열을 캐릭터셋으로 디코딩 public static void printStringToBit(String str, String charset){ ArrayList<String> string_list = null; try { string_list = byteTobitString(str.getBytes(charset)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } int string_list_size = string_list.size(); for(int i =0; i < string_list_size ; i ++){ if(i%8 == 0)System.out.println(); System.out.printf("%10s", string_list.get(i)); } System.out.println(); } //바이트 배열을 받아서 비트화시킨 문자열 리스트를 리턴함니다. //아래의 byteTobitString에 종속적임니다. public static ArrayList<String> byteTobitString(byte bytes[]){ ArrayList<String> result = new ArrayList<String>(); for(byte b : bytes) result.add(byteTobitString(b)); return result; }
//헠 헠 버그가 엄청나게 예상됨. //바이트를 받아서 8자리 비트형태로 출력해줌니다. //더쉽게 바꿀수있으면 조언부탁. public static String byteTobitString(byte param_byte){ String result = Integer.toBinaryString(param_byte); StringBuilder sb = new StringBuilder(); if(result.length() > 8){ result = result.substring(result.length()-8, result.length()); }else if(result.length() < 8){ int prepix_count_0 = 8-result.length(); for(; prepix_count_0 > 0; prepix_count_0--) sb.append("0"); } sb.append(result); // System.out.println("byteTobitString_log[ 입력 byte ] : " + param_byte); // System.out.println("byteTobitString_log[ 출력 String ] : " + sb.toString()); return sb.toString(); } //문자열 받아서 그 문자열에대한 인코딩 디코딩 정보를 보고서처럼 출력해주는검니다. public static void encodingTester(String str){ for(int i = 0 ; i < charsets.length ; i ++){ System.out.println("원래 글자 : " + str); System.out.println(" 테스트 디코딩 캐릭터셋 : " + charsets[i] ); printStringToByte(str, charsets[i]); printStringToBit(str, charsets[i]); for(int j = 0 ; j < charsets.length ; j ++){ //if(i==j)continue; try { System.out.printf("Convert[%s] => [%s] : %s \n", charsets[i], charsets[j], new String(str.getBytes(charsets[i]), charsets[j])); } catch (UnsupportedEncodingException e) {e.printStackTrace();} } System.out.println(); System.out.println(); } } public static void main(String[] args) { encodingTester("카루"); } } |
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
[객체지향 윈도우즈 프로그래밍]C학습향상스터디-표지 (0) | 2015.04.07 |
---|---|
[한국성서대학교/한국성서대] 묵상지 6주차 (2) | 2015.04.06 |
[레포트 - 객체지향 윈도우즈 프로그래밍] C언어 학습 향상 스터디 (0) | 2015.04.04 |
[객체지향 윈도우즈 프로그래밍]주소록 관리 프로그램(파일 입출력 가능) (0) | 2015.04.04 |
[네트워크 프로그래밍1]텍스트 파일을 읽어 바이트, 라인수, 단어수 출력해주기 (0) | 2015.03.31 |