將 8x8 棋盤遊戲轉換為字節
我試圖通過將游戲的 8x8 板儲存為二進制值來節省記憶體,但遇到了麻煩:
棋盤上的每個方格可以是
10
(黑)、11
(白)或00
(空),共有 64 個方格。那是 128 個二進制數字,所以這應該是 16 個字節 (128/8) 對吧?我該如何處理呢?我會說
bytes16 foo = 0b10111000...
嗎?有人有直接使用solidity字節的連結或建議嗎?
最終我想將它們用作映射中的鍵……
所以 BigNumber 具有非常有用的基本更改操作。對於任何人來說,這可能對我所做的有幫助:
var board = 'bbbbbbbbbbbbbbbbwbbwbwbbbbwwwwbbbbbbbbbbwbwwbwbww-bbbbwwwwwwwwww' boardConverted (board) { return board && '0b' + (board.match(/.{1,1}/g).map((spot) => { return spot === 'b' ? '11' : (spot === 'w' ? '10' : '00') }).join('')) } bin2hex (val) { if (!val) return var foo = new web3.BigNumber(val, 2) return foo.toString(16) } hex2bin (val) { if (!val) return var foo = new web3.BigNumber(val, 16) return foo.toString(2) } var hex = bin2hex(boardConvert(board)) var backToBin = hex2bin(hex)