XML, boyutla sınırlı değilseniz ve yerel olarak destekleniyorsa (örn. .NET ve Flash'ta) iyi bir seçimdir, ancak ince bir biçim istiyorsanız, kendi biçiminizi ve ayrıştırıcıyı kolayca oluşturabilirsiniz. Normalde 1 karakter kullanıyorum. her nesneyi ayırmak için virgül kullanın. Dizginin kodunu çözmek için virgül üzerinde bir bölünme yapın. Şimdi her nesnenin farklı özelliklere ihtiyacı vardır, bu yüzden bunları farklı bir karakterle, örneğin yarı kolonla ayırın ve özellik adlarını özellik değerlerinden ayırmak için başka bir karakter kullanın, örn. Kolon. Bu nedenle, sadece string.split kullanılarak regex olmadan kolayca kod çözülebilir. İşte bir örnek:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
özellik adlarını 1 karaktere kadar koruyarak daha fazla yerden tasarruf edebilirsiniz, örneğin sağlık için h. Örneğin.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
JSON alternatifiyle karşılaştırın:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
Ayrıca, sayılarınızın boyutunu küçültmek istiyorsanız, yazdırılabilir UTF16 karakterlerinin tamamını kullanarak bunları kodlayabilirsiniz. Bu iş parçacığı , bir ekran karakterine ne kadar veri toplayabileceğiniz konusunda Stack Overflow hakkında bir soru sormam için bana ilham verdi . Eğer brail, Kanji ve satranç taşlarına sahip olmak sakıncası yoksa cevap tamsayı için 40.000'in üzerinde bir değer gibi görünüyor: ♔♕♖♗♘♙♚♛♔♕♖♗♘♙♚
Daha fazla boyut küçültmek için, hangi değerin hangisi olduğunu belirlemek için okuma / yazma sırasını kullanabilirsiniz, bu nedenle ilk iki karakter kimliği temsil eder, sonraki iki x konumu, sonraki iki y, sonra açı, sonra sağlık Yani:
F5DGP@%&002DFTK#OP1F
diğer örneklerle aynı bilgileri saklayabilir.
Döşeme ızgaraları, her karakter farklı türde bir döşemeyi temsil eden yalnızca bir dize olarak saklanabilir, örneğin:
i789pog5h3kl
lav, 9 çim vb.