나는 잠시 동안 팩을 시도했습니다. & 정수로 일부 문자를 압축 해제했습니다. 이 질문과 관련된 몇 가지 주제가 있지만, 내 문제는 서명 된 교대와 관련이 있습니다. 나는 서명 값, 즉 압축을 해제하기 위해 '트릭'을하지 않습니다부호가있는 데이터를 사용하여 비트 단위로 풀기
예상대로 작동하지만char c1 = -119;
char c2 = 26;
// pack
int packed = (unsigned char)c1 | (c2 << 8);
// unpack
c1 = packed >> 0;
c2 = packed >> 8;
// printf(c1, c2) -> Unpacked data: -119 | 26
나는 더 많은 데이터, 즉 포장하려고하면
char c0 = -42;
char c1 = -119;
char c2 = 26;
// pack
int packed = (unsigned char)c0 | (unsigned char)(c1 << 8) | (c2 << 16);
// unpack
c0 = packed >> 0;
c1 = packed >> 8;
c2 = packed >> 16;
// printf -> Unpacked data: -42 | 0 | 26
C1 값을 놓친다. 나는 그것이 과 관련이 있다고 생각합니다. 부호 비트가 상위 위치 인으로 옮겨졌습니다.
어떻게 돌아갈 수 있습니까? c1 값이 있습니까?
미리 감사드립니다.
좋은 설명 :) 의심의 여지가 없습니다. 감사합니다! – pQB