내 기능 :
void output(int word)
{
file << putchar((word >> 24) & 0xff);
file << putchar((word >> 16) & 0xff);
file << putchar((word >> 8) & 0xff);
file << putchar(word & 0xff);
}
여기서 "file"은 fstream을 사용하여 putchar에서 "binary.bin"이라는 파일로 바이너리를 출력합니다. "word"가 1이면 binary.bin의 이진 표현은 00110000 00110000 00110000 00110001입니다.
00000000 00000000 00000000 00000001이어야합니다. (참고 : 단어는 32 비트입니다.)
00110000 00110000 00110000 00110001은 0001 (30 30 30 31)의 ASCII 표현입니다.
무엇이 잘못 되었나요?
문제는 operator<<
입니다. 스트림 삽입 연산자는 입력을 텍스트 형식으로 변환하고 형식이 지정된 텍스트를 스트림에 전달하도록 설계되었습니다.
file << putchar((word >> 24) & 0xff);
^^----> this is the problem.
당신은 같은 번역을 수행하지 않는 스트림 방법을 사용해야합니다 std::ostream::put
또는 std::ostream::write
.
또한 putchar
함수는 콘솔에 인수를 쓰고 성공하면 인수를 반환합니다. putchar에 대한 설명을
참조하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다