요즘 세상에 바이너리 레코드 설계가 무슨 필요가 있는가 싶은데,
살다보니 그게 필요하기도 하네
예를 들어 사전을 만든다고 하면, key(표제어), value(의미,기타 등등) 구조가 제일 편함.
hash 자료구조 또는 파일 DB (DBM) 으로 key 넣고 value 를 꺼내오면 되는데,
value 에 설명1,설명2,기타1,기타2,바이올린1,바이올린2... 이렇게 여러개의 항목을 넣고 싶을 때도 있는데,
그 때, delimiter 를 뭘로 할까 고민됨. 그렇다고 해서 xml 사용하면 배보다 배꼽이 커짐.
이런 상황에 쓸만한게 바로 ASCII 코드!!!
https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text
| ASCII Dec | Symbol | Unicode Name | Common Name | Usage |
|---|---|---|---|---|
| 28 | ␜ | INFORMATION SEPARATOR FOUR | file separator | End of file. Or between a concatenation of what might otherwise be separate files. |
| 29 | ␝ | INFORMATION SEPARATOR THREE | group separator | Between sections of data. Not needed in simple data files. |
| 30 | ␞ | INFORMATION SEPARATOR TWO | record separator | End of a record or row. |
| 31 | ␟ | INFORMATION SEPARATOR ONE | unit separator | Between fields of a record, or members of a row. |
근데 escape 문자 필요해지는 상황 아니면 그냥 readable한 문자 쓰는게 편할듯
'a' 이런 거 쓰면 곤란하지, '\n', '\0', '\t', '\r' 이런 문자들 모두 아스키 문자임. 그리고 마찬가지로 '\28', '\29', '\30', '\31' 이렇게 쓸 수 있음.
따옴표나 괄호 있잖아. 안에 들어가는 문자 종류가 제한되있으면 굳이 편집 불편한 문자 쓸 이유가 뭐있냐는 말임.
above, aside 이 두 단어를 어떻게 나눌까? "," 로? 그러면 above 뜻에 above 는 이거, 저거, 또는 그거를 의미한다. 이러면 "," 이거를 delimiter 로 사용하면,...?
;|\ 모두 마찬가지지. '\31' 이런 거는 눈에 보이는 문자가 아니기 때문에, 그냥 파일 읽어서 '\31' 만나면 거기서 끊으면 됨. 포인터로 '\31' 다음을 가리키면 되지. 논리가 더 단순하고 코드가 더 간결해짐. ;|\ 를 사용하는것보다 오류 발생 소지가 더 적고, 테스트할 분량이 더 줄지. ㅇㅋ?
문맥 진짜 못알아듣네
printf ("%c|%c|%c", '\035', '\036', '\040'); 8진수나, 16진수 써야하나보네..
답정너 기질이 있어서 정상적인 대화가 힘듦
바이너리 레코드임. 텍스트 포맷 아님.
텍스트 문자열 내에 delimiter 을 눈이 보이는 문자로 쓰면 어떤 일이 벌어지는지 함 해봐. 1개 문자로 가능한지 함 해보삼.
그니까 "escape sequence(정정함) 필요해지는 상황 아니면"이라고 조건 달았잖아. 가령 한글 단어끼리 대응되는 사전을 저장할때 저렇게 하면 이점이 있음?
이제 이해됨;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 죄송여ㅠㅠ
이제 이해됨;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 죄송여ㅠㅠ
얼마전에 트위치 irc 파서만드는데 명령어에 이지랄 해놔서 만들면서 개빡쳤응
나두 결국 빡쳐서const TianDictItem item[] = { "대", "大:크다|代:대신하다", "비", "非:아니다", "소", "小:작다", "아", "我:나", "大", "대:크다", "代", "대:대신하다", "非", "비:아니다", "小", "소", "我", "아"};이렇게 했음. 속이 다 시원하네