자바에서는 부호없는 8 비트 정수 (0에서 255 범위 내)가되도록 파일에 정수를 쓰려면 어떻게해야합니까? 숫자가 int 유형이고 0-255 이내이면 충분합니까? 아니면 먼저 다른 유형으로 변환해야합니까? 나는 그것도 똑같은 것 같아? 하지만 파일에 넣을 때 재미있는 일이 생기면 확실하지 않습니다.java : 부호없는 8 비트 정수로 파일에 정수 쓰기
3
A
답변
8
부호가 붙은 부호와 부호가없는 것은 비트 패턴 자체가 아니라 어떻게 비트 패턴이 해석되는지에 관한 문제입니다.
정수가 0
에서 255
범위에있는 경우 바이트로 잼을하여 파일에 쓸 수 있습니다. 자바 서명 된 것으로 바이트 비트 패턴을 해석하기 때문에
그러나, 당신이 그들을 다시 읽을 때주의해야합니다. 예를 들어
, 당신은 정수 253
을 말한다. 이것은 (전체 32 비트 형태로)입니다 :
00000000000000000000000011111101
당신이 할 경우 : 당신이 사용하는 자바를 요구하는 경우에
11111101
:
int i = 253;
byte b = (byte) i;
는 b
는 비트를 포함합니다 Java는 비트를 부호로 해석 할 때 -3
이 패턴 11111101
으로 표시되기 때문에 -3
이라고 주장합니다. 따라서 파일에 해당 바이트를 쓰면 원하는 경우 비트 11111101
이 기록됩니다.
마찬가지로 파일을 읽을 때 다시 바이트를 읽을 때 읽은 바이트는 비트 패턴 11111101
으로 채워지며 다시 자바는 -3
으로 해석됩니다. 그래서 그냥하지 수 :
byte b = readByteFromFile();
int i = b;
자바는 -3
로 b
's의 내용을 해석하고 당신에게있을 것입니다 32 비트 정수로 -3
를 나타내는 정수 줄 것 때문에 :
11111111111111111111111111111101
을 대신, 끝내야 할 정수가 다음과 같아야합니다.
00000000000000000000000011111101
그래서,
byte b = readByteFromFile();
int i = (0x000000FF) & b;
2
DataOutputStream.writeByte()
은 1 바이트 값으로 int
을 쓸 것입니다.
관련 문제
- 1. 파이썬 바이트를 "부호없는 8 비트 정수"로 변환
- 2. 큰 배열의 26 비트 부호없는 정수
- 3. 부호없는 정수
- 4. 8 비트 부호없는 정수를 정수 또는 문자열로 변환하는 방법
- 5. PHP - 8 비트 정수 읽기
- 6. .NET long을 부호없는 8 바이트 정수로 변환
- 7. Qt QByteArrays + 16 비트 부호없는 정수
- 8. C에서 부호가있는 부호없는 정수로 변환
- 9. pymongo 64bit 부호없는 정수
- 10. 4 바이트를 부호없는 32 비트 정수로 변환하고 long에 저장하십시오.
- 11. 이진 파일에 정수 쓰기 (C++)
- 12. 64 비트 데이터 모델에서 64 비트 부호없는 정수 리터럴 지정
- 13. 정수 인수의 문자열 표현을 밑수 16의 부호없는 정수로 반환하는 방법
- 14. 32 비트 정수를 10 비트 정수로 해시하는 방법은 무엇입니까?
- 15. 부호없는 문자 배열을 정수로 변환
- 16. Python으로 UTF-8 파일에 쓰기
- 17. 파이썬에서 정수로 비트 수정하기
- 18. 문자열에서 64 비트 정수로 변환
- 19. 16 비트 정수를 파이썬에서 두 개의 8 비트 정수로 나누기
- 20. Java : 부호없는 숫자
- 21. c의 부호없는 정수
- 22. 부호없는 정수 및 색상
- 23. DWORD 및 부호없는 정수
- 24. MFC CString을 부호없는 정수로 변환
- 25. 정수로 정수 곱하기 (C++)
- 26. MPI : 파일에 정수 쓰기 및 읽기
- 27. fputs()를 사용하여 파일에 정수 쓰기
- 28. 비트 단위 또는 2의 부호없는 정수 (프로그램 충돌)
- 29. C# 부호없는 int 96 비트
- 30. Java : 바이트를 정수로 변환합니다.
다음과 같은 의미입니까? short s = (0x00FF) & b;? – Brian