單個文件會比依靠文件系統組織更簡單,佔用更少的物理磁盤空間。只需在文件的開頭維護一個偏移量表以鏈接到每個塊。
就壓縮而言,應用運行長度編碼會明顯縮小文件大小,如果它與Minecraft類似,則會依次有很多相同的塊。作爲獎勵,它將在使用拼盤驅動器的計算機上加載速度更快,因爲幾個字節可以等同於數千個塊,而不必爲每個塊讀取一個字節。下面是一個有效的遊程編碼的快速提示:使用一個命令字節,比如說0x00。所有其他字節都與塊關聯,但命令字節將表示信息的非塊位。傳統的行程長度編碼是這樣的:
Source: AAAABBBBBBBCDDDEFA
Destination: 0x0441074201430344014501460161
Plaintext: .A.B.C.D.E.F.A
使用命令字節,省略這將增加大小的序列:
Source: AAAABBBBBBBCDDDEFA
Destination: 0x00044100074243444444454641.
Plaintext: ..A..BCDDDEFA
這具有在數據的「大理石」部分具有明顯的優勢。
另一件事,我建議你使用一個系統來存儲類似於midi格式的數字,儘管是小尾數格式。爲了節省你的谷歌搜索,它的真正意義在於你爲每個用於存儲數字的字節犧牲了一點。如果第8位被設置,則意味着該數字中有另一個字節,並且級聯。例如:
Storing: 65
Stored as: 0x41 (01000001) //The eighth bit is not set, so this number only occupies 7 bits.
Storing: 192
Stored as: 0xC081 (11000000 10000001) //The eighth bit of the first byte is set, so the following byte is part of the number. The second byte doesn't have the eighth bit set, so the number ends there.
Storing: 612453
Stored as: 0x72D825 (11100101 1011000 00100101) //The eighth bit of the first two bytes are set, and the third is not, so this number occupies 3 bytes.
我希望我幫忙提供一些見解。
這可能是[gamedev.se](http://gamedev.stackexchange.com/)更好的問題。 – 2012-03-01 04:34:16