2009-07-16 4 views
0

NSStreams에서 /에서 int를 읽고 쓸 수 있습니까? 나는 개별적으로 바이트를 읽을 수 있지만 엔디안을 고려해야한다고 생각합니다. Java 이러한 경우에는 DataStreams있다, Obj-C 뭔가가 있나요?NSStreams에서 ints 읽기/쓰기 방법

답변

2

스트림에 나와있는 것은 어디에도 없습니다. 네트워크에서 호스트 순서로 변환하기위한 표준 ntoh */hton * 기능 모음이 있습니다.

0
+0

예.하지만 일련의 바이트를 바이트 배열로 읽습니다. 완전한 정수를 읽고 plataform 엔디안에 따라 바이트를 정렬하려고합니다. –

0

내가 objc 동등한 알고 있지만 자신의 손으로 물건을 복용하지 않습니다 하드 :

시프트 연산자를 사용하여 한 번에 1 바이트 씩 int를 쓰고 비슷하게 읽고 다시 구성하십시오. 당신이 빅 endian 형식으로 작성하려는 경우

은 같은 것을 할 : 당신이 리틀 엔디안을 원하는 경우

for(int i = 0; i < 4; i++) WriteAByteLOL((n >> (8*(4-i-1))) & 0xff); 

루프 순서를 반대로. 독서를 들어

,이 작업을 수행 (4 바이트 배열 b의 데이터 생활 가정) :

unsigned int n = 0; 
for(int i = 0; i < 4; i++) n = (n<<8) | b[i]; 

쉬운!

0

오프 - 핸드, 소켓 층 구현이 있는지 모르겠다.

Objective C에서 Core Endian Reference 매뉴얼을 살펴보십시오.

Mac OS X에서 사용할 수있는 C 레벨 XDR 루틴을 살펴보십시오. XDR (External Data Representation) 루틴은 일반적인 유닉스 레벨 RPC 환경의 일부입니다.

또는 자신의 바이트를 사용할 수 있습니다.

gSOAP 또는 XML 또는 기타도 여기 응용 프로그램에 계층화되어 있습니다. 네트워크 트래픽을 넘어 서기를 원합니다. (내가 관리 할 수 ​​있다면 내 프로토콜을 사용하는 것을 피하는 경향이 있습니다.)

그리고이 작업으로 무엇을하고 있든지 관계없이 어떤 네트워크에서든 바이트 스트림에 버전 번호를 기억해야합니다. 프로토콜을 사용합니다.

관련 문제