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

 
Wednesday, October 25, 2006

C언어] 영문 문자열 헥사(Hex) 덤프, 16진수로 변환 출력; String Dump


문자열의 정확한 구조를 알아야 할 때나, 문자열의 끝이 널문자(\0)로 정확히 끝나는지 궁금할 때, dumpString() 함수로 문자열을 아스키 코드로 출력해 볼 수 있습니다. 영문이나 숫자 등의 1바이트 문자용입니다.

한글 등의 2바이트 문자를 완성형 코드로 덤프하는 방법은 여기에 있습니다: ▶▶ 한글 확장 완성형 문자열 헥사 덤프, 16진수로 변환; Hangul Hex Dump


문자열을 헥사(Hex) 아스키 코드로 출력 예제 소스


파일명: strdump_to_hex.cpp
#include <stdio.h>
#include <string.h>

void dumpString(char *s);


void main(void) {
  char s[] = "ABCDEFG 123";

  dumpString(s);
}


void dumpString(char *s) {
  size_t arraySize = strlen(s) + 1; // strlen 함수는 행끝의 null 문자는 세지 않기에, 플러스 1

  printf("문자열 배열: %s\n", s);
  printf("배열의 바이트 수: %d\n", arraySize);

  for (size_t i = 0; i < arraySize; i++)
    printf("[%2d] %c = 0x%02X\n", i, s[i], *(s+i));

}



실행 결과 화면:
D:\Z>cl strdump_to_hex.cpp && strdump_to_hex.exe
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

strdump_to_hex.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

/out:strdump_to_hex.exe
strdump_to_hex.obj
문자열 배열: ABCDEFG 123
배열의 바이트 수: 12
[ 0] A = 0x41
[ 1] B = 0x42
[ 2] C = 0x43
[ 3] D = 0x44
[ 4] E = 0x45
[ 5] F = 0x46
[ 6] G = 0x47
[ 7]   = 0x20
[ 8] 1 = 0x31
[ 9] 2 = 0x32
[10] 3 = 0x33
[11]   = 0x00


단, 출력 결과를 갈무리할 때, 좀 문제가 생깁니다.
[11]   = 0x00
이 부분이 잘 보이지 않을 것입니다. 왜냐하면 문자열의 끝을 의미하는 널문자 '\0' 가 들어 있기 때문입니다. (줄바꿈 문자와는 전혀 다른 것입니다.) 캡처해서 사용하려면, 보이지 않는 널문자를 공백 문자로 바꾸어 주어야 합니다.




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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