C에서는 비트 수준에서 데이터를 저장하는 데 사용하는 char 배열이 있습니다. 이러한 배열을 파일에 저장 한 다음 다른 아키텍처의 컴퓨터에서 읽습니다. 내 질문은 비트의 순서가 일관성이 보장됩니다면입니까? 예를 들어 첫 번째 바이트에 "10010011"을 저장하면 인접한 1은 항상 2^0 및 2^1 위치에 있도록 읽혀지며 2^7 및 2^6 비트로 해석 될 수 있습니다 ?C 바이너리 파일의 비트 엔디안 및 이식성
편집 : 나중에이 페이지를 읽는 사람들을 위해이 질문을 조금 분명히하고 싶습니다. 바이트 엔디안은 멀티 바이트 객체의 바이트 순서이지만, 주어진 바이트의 비트가 신경 쓰입니다. 바이트가 디스크에 저장되면 (일반적으로) 8 비트의 순서로 저장됩니다. 나는 하드웨어 전문가가 아니지만, 어떻게 든 그걸 내려야 만합니다. 그래서, 내 관심사는 바이트가 저장되는 방식으로 모든 기계가 원래의 부호없는 char 값을 읽을 수 있도록하는 경우 또는 3 대 1의 기계가 192 대 다른 것인가에 관한 것입니다. 나는 비트가 어떻게 든 뒤섞이는 것을 우려하고있다. 분명히, 이것은 내가 선택한 답과 아래의 의견들 중 하나에 따라 걱정이되지 않습니다. 감사.
C는 바이트의 크기를 보장하려고하지 않는다는 것을 알고 있기를 바랍니다. 적어도 8 비트가되어야한다고 말하기는 커녕, 8 비트 바이트를 싫어하는 아키텍처에 대한 양보로서 그게 많이 ... – Deduplicator
경고를 주셔서 감사합니다, 나는 적어도 8 비트의 보장에 의존하므로, 높은 순서의 비트가있는 경우 문제가 발생하지 않아야합니다. – Jack
8-bit-char (모든것이 현대적인 것으로, 2의 큰 출력을 사용하는 예외는 거의없는) 아키텍처에 자신을 제한하는 경우, 'unsigned char'을 읽고 쓰는 것을 제한하고 수동으로 (de-)보다 복잡한 모든 것을 직렬화합니다. 더 많은 보장은 일을 더 쉽고 빠르게 만들 것입니다 ... – Deduplicator