아 c에서 기억이 너무 안나서 여쭈어봅니다..

victoryz12의 이미지

char 0x41
........
...**...
...**...
...**...
...**...
..*..*..
..*..*..
..*..*..
..*..*..
.******.
.*....*.
.*....*.
.*....*.
***..***
........
........

hankaku.txt 에서의 코드 이구요~

소스 프로그램에서 이 텍스트 파일의 데이터를 쓸때

extern char hankaku[4096];

hankaku + 0x41*16;
이런식으로 사용하네요~ 무슨 의미인지 잘 모르겠네요;;ㅠ

텍스트 파일 코드부분 설명 부탁드립니다;;ㅜ

감사합니다.

neocoin의 이미지

이 코드 돌아가나요? 흠.. 전 안돌아가는데..

victoryz12의 이미지

텍스트 파일 상에서의 코드네요;;

hankaku.txt 에서의 코드 파일이구요~

소스 프로그램에서 이 텍스트 파일의 데이터를 쓸때

extern char hankaku[4096];

hankaku + 0x41*16; 이런식으로 사용하네요~ 무슨 의미인지 잘 모르겠네요;;ㅠ

neocoin의 이미지

hankaku 포인터에서 0x41*16 만큼 뒤로 이동한 주소를 달라는건데, 이 의미를 물어보신건지요.

전 저 그림이 코드인줄 알았네요. 신기해 했는데.. ;;

victoryz12의 이미지

0x41 이게 주소 표현인가요? 주소표현을 char 0x41로 1바이트로 표현할수 있는것인가요??

mithrandir의 이미지

0x41 은 16진수입니다.

hankaku + 0x41*16


&hankaku[0x41*16]

과 동일합니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

neocoin의 이미지

어떻게 표현해 드릴지 난감하네요. 0x41 은 그냥 숫자입니다. 다만 16진수로 표현했을 뿐이죠.

막상 검색해서 c spec 에서 내용을 찾아보려 하니 잘 못찾겠네요. Lexical Rules에 digit에 대한 정의가 0|1|...|9| 로만 되어 있는데, 왜 그냥 책에 있는걸 그냥 믿었는지 제 자신을 의심하고 있습니다. ;;

ref ) C-- Language Specification

책을 보시라고 할수 밖에 없네요. 예를들어 그냥

printf("%d\n", 0xa);

하면 그냥 10이 출력됩니다.

전후 소스를 참조할수 없는 관계로 그 구문이 어떤 의미를 담는지 정확히 모르겠네요. 저건 그냥 숫자입니다. 그냥 포인터 연산에 불과하구요. 수고하세요.

planetarium의 이미지

참고하시라고 몇가지 적으면

- 0x41은 10진수로 65이며, ASCII 코드 혹은 UTF-8 환경에서 대문자 A를 나타냅니다.
- 16을 곱한 것으로 보아서, 하나의 문자를 나타내는데 16byte를 사용한다고 추측할 수 있습니다.
- 올려주신 텍스트의 형태를 보면 8 x 16 형태로 대문자 A를 그리고 있습니다. 하나의 . 혹은 * 을 1비트라고 가정하면, 둘째줄 부터의 전체 내용은 16byte입니다.

즉, hankaku 배열은 ASCII 문자 256가지의 생김새를 bit값으로 저장하고 있는 것으로 추측됩니다. 대문자 A의 모양은 hankaku 배열의 [0x41 * 16] 에서부터 16byte의 공간에 저장될 겁니다.

unsouled의 이미지

옛날 생각 나네요.
어렸을 적에 에뮬레이터 게임 롬을 해킹/패치해 본 경험이 있는데, 흔히 말하는 한글화라는 과정에서 많이 볼 수 있는 패턴이네요.

planetarium 님 말씀처럼 8 x 16 폰트를 배열에 넣고 그 폰트를 가져오는 코드입니다.
16 바이트에 폰트의 그래픽 데이터를 넣고, 그 그래픽 데이터를 가리키는 문자코드(여기서는 0x41, ascii 코드가 되겠네요.)들의 조합으로 게임에서 쓰이는 대사를 만들어 내죠.

그래서 폰트의 그래픽 데이터 영역을 수정하고, 문자코드로 이뤄진 대사들의 코드를 재배치해서 다른 대사를 만들어 내는 식으로 패치를 만들어 냈었습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.