프로젝트에서 압축 용도로 일종의 가변 길이 정수를 사용하려고합니다. 이제 바이트에서 길이가 긴 부호없는 long long의 실제 길이를 계산하는 함수가 있습니다 (올바르게 표시하기 위해 얼마나 많은 바이트를 사용해야하는지). 나는 배열에 채워지는 부호없는 long long 부분을 복사하지 않을 것입니다. (예를 들어 long long 0000 ... 0000 10110010에서 10110010 바이트를 복사하고 싶습니다.) 내가 memcpy 시도했지만,이 작동하지 않는 것. 어떻게해야합니까? 이것은 지금까지 내 코드입니다C에서 배열에 unsigned long long의 최하위 바이트를 복사하십시오.
:
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 (little- 또는 빅 엔디안)에 지정되지 않은 사실에서 오는 생각하지만, 내가 할 수있는 이 문제에 대한 해결책을 찾은 것 같습니다.
메모리 추가를 방지 하시겠습니까? 'temp & 0xFF' 그리고 바이트 크기 타입으로 캐스팅 –
불분명 한 코드라고하면 ... 여기에는 3 개의 알려지지 않은 함수와 몇 가지 알려지지 않은 변수 타입이 있습니다! 이 코드의 입력 (즉,'input' 변수의 타입)은 정확히 무엇입니까? –