Я пытаюсь использовать целые числа переменной длины для целей сжатия в проекте. Теперь у меня есть функция, которая вычисляет то, что фактическая длина unsigned long long в байтах (таким образом, сколько байтов должно использоваться для правильного отображения). Я не буду копировать часть unsigned long long, которая заполняется в массив (так, например, я хочу скопировать 10110010 байт из длинного 0000 ... 0000 10110010). Я пробовал memcpy, но это не работает. Как я могу это сделать?Копировать наименьшие байты беззнакового длинного длинного массива в C
Это мой код до сих пор:
if (list_length(input) >= 1) {
unsigned long long previous = list_get(input, 0);
unsigned long long temp;
for (unsigned int i = 1; i < list_length(input); i++) {
temp = list_get(input, i);
unsigned long long value = temp - previous;
size = delta_get_byte_size(value);
memcpy(&output[currentByte], &value, size);
currentByte += size;
previous = temp;
}
}
Я думаю, что проблема связана с тем, что порядок отдельных байтов, не указанных в C (мало- или обратного порядка), но я могу» t, похоже, найти решение этой проблемы.
а затем избегать добавления памяти? 'temp & 0xFF' и отбрасывается в байтовый тип –
Говоря о нечетком коде ... Здесь есть 3 неизвестные функции и несколько неизвестных типов переменных! Что именно вводит этот код (т. Е. Тип переменной 'input')? –