Wednesday, October 25, 2006
C언어] 영문 문자열 헥사(Hex) 덤프, 16진수로 변환 출력; String Dump
문자열의 정확한 구조를 알아야 할 때나, 문자열의 끝이 널문자(\0)로 정확히 끝나는지 궁금할 때, dumpString() 함수로 문자열을 아스키 코드로 출력해 볼 수 있습니다. 영문이나 숫자 등의 1바이트 문자용입니다.
한글 등의 2바이트 문자를 완성형 코드로 덤프하는 방법은 여기에 있습니다: ▶▶ 한글 확장 완성형 문자열 헥사 덤프, 16진수로 변환; Hangul Hex Dump
파일명: strdump_to_hex.cpp
실행 결과 화면:
단, 출력 결과를 갈무리할 때, 좀 문제가 생깁니다.
[11] = 0x00
이 부분이 잘 보이지 않을 것입니다. 왜냐하면 문자열의 끝을 의미하는 널문자 '\0' 가 들어 있기 때문입니다. (줄바꿈 문자와는 전혀 다른 것입니다.) 캡처해서 사용하려면, 보이지 않는 널문자를 공백 문자로 바꾸어 주어야 합니다.
한글 등의 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));
}
#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
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++)
<< Home