0
我正在做一些整數壓縮的工作。
我已經在C++中實現了可變字節編碼算法(請參閱下面的代碼片段)。如何在golang中實現可變字節編碼算法
我不知道如何實現它在golang因爲我不能在內存中轉換int
類型之間string
或tune
類型memcpy()
一樣。
然後,我已經計算出binary.Write()
包encoding/binary
可以做序列化工作,它可以將uint8編碼爲一個字節,unint16編碼爲2個字節,uint32編碼爲4種類型等等。
但如何編碼一個整數,介於2097152和268435456之間,只使用3個字節?
有沒有類似的片段轉換方法?
void encode(int value, char* code_list, int& len) {
int bit_value = 0;
int bit_num = 0;
if (value < 128) {
bit_num = 1;
} else if (value < 16384) {
bit_num = 2;
bit_value = 1;
} else if (value < 2097152) {
bit_num = 3;
bit_value = 3;
} else {
bit_num = 4;
bit_value = 7;
}
value <<= bit_num;
value += bit_value;
memcpy(code_list + len, (char*) &value, bit_num);
len += bit_num;
}
知道了,謝謝。 – Will