크기에 제한을받지 않고 기본적으로 지원되는 경우 (예 : .NET 및 Flash) XML을 선택하는 것이 좋지만 슬림 한 형식을 원하는 경우 고유 한 형식을 만들고 파서를 매우 쉽게 만들 수 있습니다. 나는 보통 1 문자를 사용합니다. 각 객체를 분리하려면 쉼표를 사용하십시오. 문자열을 디코딩하려면 쉼표로 분할하십시오. 이제 각 객체에는 서로 다른 속성이 필요하므로 이러한 속성을 세미콜론과 같은 다른 문자로 구분하고 다른 문자를 사용하여 속성 이름과 속성 이름을 구분하십시오. 콜론. 따라서 string.split을 사용하여 정규식없이 쉽게 디코딩 할 수 있습니다. 예를 들면 다음과 같습니다.
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
속성 이름을 1 자 이하로 유지하면 더 많은 공간을 절약 할 수 있습니다 (예 : 건강을 위해 h). 예 :
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
JSON 대안과 비교하십시오.
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
또한 숫자의 크기를 줄이려면 인쇄 가능한 전체 UTF16 문자 세트를 사용하여 숫자를 인코딩 할 수 있습니다. 이 스레드 는 하나의 화면 문자에 얼마나 많은 데이터를 넣을 수 있는지에 대한 질문을 스택 오버플로에 대해 묻게 했습니다 . 점자, 간지 및 체스 조각이 마음에 들지 않으면 정수에 대한 값이 40,000 개가 넘는 것 같습니다. ♔♕♖♗♘♙♚♛♜♝♞♟
크기를 더 줄이려면 읽기 / 쓰기 순서를 사용하여 어떤 값이 어느 값인지 결정하면 처음 두 문자는 id를 나타내고 다음 두 문자는 x 위치, 다음 두 문자는 y 위치, 각도, 건강 상태를 나타냅니다. 등 :
F5DGP@%&002DFTK#OP1F
다른 예제와 동일한 정보를 모두 저장할 수 있습니다.
타일 그리드는 각 문자가 다른 유형의 타일을 나타내는 문자열로 저장 될 수 있습니다. 예 :
i789pog5h3kl
내가 용암을 의미하는 곳, 9는 잔디 등을 의미하는 곳