NBT (Named Binary Tags) 구조에 대한 파서를 작성하고 싶습니다. 포맷은 다음과 같이 표현된다 : 데이터 구조를 저장하는 효율적이고 간단한 방법은 무엇입니까?
TAG_Compound("hello world"): 1 entries
{
TAG_String("name"): Bananrama
}
메모리에
(또는에 저장된 파일) 진수보기로는 :0000000: 0a 00 0b 68 65 6c 6c 6f 20 77 6f 72 6c 64 08 00 ...hello world..
0000010: 04 6e 61 6d 65 00 09 42 61 6e 61 6e 72 61 6d 61 .name..Bananrama
0000020: 00 .
가
0x0a
= TAG_Compound0x00 0x0b
가 = 이름이고 11 자 길이- "hello world"
0x08
= TAG_String0x00 0x04
= 이름- "바나나"긴 4 자
- "이름"
0x00 0x09
= 페이로드는 9 자
0x00
= TAG_END
트리 구조와 같이 중첩 된 TAG_Compound
이 점점 더 복잡해질 수 있습니다.
제 질문은 형식을 구문 분석하는 것과 정확히 같지 않습니다. 정말 쉽습니다. 나는 오히려 얼마나 효율적이고 더 중요한가에 대해 알고 싶다. convenietly 나중에 사용하기 위해 보관.
은 내가
tags["hello world"]["name"] = "Bananrama"
하지만 사용하기 쉽게 유지하면서 보관하는 가장 좋은 방법입니다 같은 용이성의 정도를 얻을 수있어? 내가 nbt_compound
구조 (모든 NBT 트리에 적어도 하나의 루트 컴파운드가 있기 때문에)에 대해 생각했다. 얼마나 많은 자식을 저장하고 그 값의 유형과 내용을 저장하는 nbt_value
구조체의 배열을 포함하게했다. 그거 좋은 생각이야?
편집은 : 전체 사양은
당신은 단지 그것을 저장하거나 만드시겠습니까 : 나는 그런 다음 원하는 액세스
처럼 기능으로
처럼 태그 객체를 사용하는 것이 생각/수정도? –
생성 또는 수정하지 않고 단지 정보를 읽거나 가져 오는 것 – LukeN
이미 구문 분석 할 코드가 있다면 얻으면서 저장하지 않으시겠습니까? 별도의 serialize/deserialize 코드를 작성할 필요가 없습니다. 이것은 나에게 매우 편리합니다 .--). –