대용량 데이터 컬렉션 (약 100 개의 배열에 10^9 레코드가 분산 됨)의 공간을 절약하기 위해 Java byte
의 0..255 범위의 값을 저장하는 코드가 있습니다.작은 정수형을 더 넓은 정수형으로 캐스팅 할 때 마스크를 사용하여 기호를 제거하는 것이 안전합니까?
복구에 대한 추가 조치가 없으면 큰 값은 음수로 해석됩니다 (Java 정수 유형은 two's complement 표현을 사용하기 때문에).
나는 관련 질문에 대한 응답으로 starblue에서 this helpful hint을 얻고,이 기술에 의존하는 것이 안전한지 궁금하네요 :
int iOriginal = 128, iRestore;
byte bStore = (byte) iOriginal; // reading this value directly would yield -128
iRestore = 0xff & bStore;