2017-10-20 239 views
-1

因此,我使用C和我有6種命令編號爲0-5,要組合它們中的3個,並將組合保存在單個字節中。所以問題是我如何編碼這些數字?例如,如果我使用二進制編碼,所以5是101,那麼我不能保存555,因爲101101101有9位,一個字節只有8位。 感謝您的關注。在一個字節中壓縮3個數字數據

+1

你不能那樣做。可能的連擊數(343)超過256. –

+0

您總是需要至少三位來表示6個符號,因此您無法在一個字節中表示三個不同的符號。 – user0042

+0

對不起0-5,6種標誌 – zpwpal

回答

8

對待三個數字爲三位數基-6-數,並計算其值:

value = num1 * 36 + num2 * 6 + num3 

num1 = value/36 
num2 = (value/6) % 6 
num3 = value % 6 

的值將是從0到215的範圍內,因此它在一個字節配合。

+0

完美答案,謝謝 – zpwpal

+0

切題評論。如果你需要做很多事情(可能是爲了一個顏色表),你會發現/和%很慢:你可以使用LUT進行解碼;或者小心謹慎地使用乘法和移位來進行近似分割(它只需要足夠精確以適應那些216值)。 – NickJH