컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post 슈나이더 UV 필터; Schneider B+W 007 NEUTRAL MRC 52mm 구매기...카시오 계산기 붙은 시계 실물 사진; Casio Calculator Watch DBC32-...Nikon D40X 구매기; 니콘 DSLR D40 의 고화소 버전계산기 시계(전자계산기 달린 손목시계) 구매기; Calculator Watch CasioPerl 펄] 한글 문자열 1글자씩 처리, 유니코드(UTF-8) 배열로 변환; Unicod...Perl 펄] unpack pack 함수, 문자열을 1글자씩 처리, 배열로 변환Perl 펄] 바이트 배열을, 이진 문자열로 변환 방법; Bytes to Binary Ar...Perl 펄] Image::ExifTool::Exif 모듈 다운로드 설치법Perl 펄] EXIF 정보 읽기, 디카 촬영 정보 출력 소스; Exif Info Dump...매스매티카 Mathematica, 평균 값, 합계 구하기 함수; Mean Average S...

Perl 펄] 이진 문자열 여부 판단, 문자열을 헥사로 출력; Binary String to Hex

Monday, May 14, 2007

문자열(String)은 일반 문자로 구성되어 있을 수도 있고, "제어 문자" 같은, 눈에 보이지 않는 이진 데이터로 이루어져 있을 수도 있습니다. 이 여부를 판단하는 함수입니다.

더 정확히 말하자면, "ABC abc 123 !@#$% ..." 등의 영문+숫자+기호처럼 "영문 키보드로 직접 입력 가능한 문자" 여부만을 판단합니다. 그래서 한글 문자열일 경우에도 이진 문자열로 판단하는 한계가 있습니다.

일반 문자들 속에 제어문자가 하나라도 섞여 있으면, 이진 문자열로 간주합니다.

파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;


  # 이진 문자열 만들기
  my @bytes = ( 0x41, 0x20, 0x00, 0x01, 0x02, 0xFF ); # 이진 데이터 배열 만들기
  my $s = pack "C*", @bytes; # 이진 배열을 이진 문자열로 합치기


  # 일반 텍스트 문자열이면 그대로 출력
  # 이진 문자열이면 헥사로 출력하기
  if (isPrintableString($s)) {
    print $s, "\n";
  }
  else {
    print stringToHex($s), "\n";
  }
  # 출력 결과: 41 20 00 01 02 FF


  $s = "Apple";
  if (isPrintableString($s)) {
    print $s, "\n";
  }
  else {
    print stringToHex($s), "\n";
  }
  # Apple


  $s = "똠방";
  if (isPrintableString($s)) {
    print $s, "\n";
  }
  else {
    print stringToHex($s), "\n";
  }
  # 8C 63 B9 E6
  # 한글도 이진 문자열로 간주됨



# 문자열이 영문 키보드로 입력할 수 있는 문자들만으로
# 구성되어 있으면 참(true)을 반환
sub isPrintableString {
  my @a = unpack "C*", $_[0]; # 문자열을, 1바이트씩 분리하여 배열로 만들기

  foreach (@a) {
    next if ($_ == 0x0A || $_ == 0x0D || $_ == 0x09);
    return 0 if ($_ < 0x20 || $_ > 0x7E); # 키보드로 입력할 수 없는 문자일 경우는 거짓(false) 반환
  }

  return 1; # 그밖의 경우는 참(true) 반환
}


# 문자열을 헥사로 출력하는 함수
sub stringToHex {
  my @a = unpack "C*", $_[0]; # 문자열을, 1바이트씩 분리하여 배열로 만들기
  my $s = "";

  foreach (@a) {
    $s .= sprintf("%02X ", $_);
  }

  return $s;
}



▶▶ Perl 펄] 헥사 값을 문자열로 변환 출력 함수; Hex to ASCII String

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top