2009-07-16 5 views
0

NSStreamsからintを読み書きするにはどうすればよいですか?私はバイトを個別に読むことができますが、エンディアンを考慮したいと思います。 JavaにはDataStreamsがありますが、Obj-Cに相当するものがありますか?NSStreamsからintsを読み書きする方法

答えて

2

ストリームの中にあなたのためのものは何もありません。 ntoh */hton *の標準的な関数群は、ネットワークからホストへの順序と逆順に変換します。 maxLengthのを::

0
+0

はい、ただし、バイト配列をバイト配列に読み取ります。私は、完全なintsを読み込み、plataformのエンディアンに従ってバイトを並べたいと思っています。 –

0

は私がにObjC同等のか分からないが、あなた自身の手に物事を取ることはないですかハード:

シフト演算子を使用してintを1バイトずつ書き、同様にそれらを読み込んで再構成します。あなたはビッグエンディアン形式で書きたい場合は

は、このような何かを:あなたはリトルエンディアンをしたい場合

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)ルーチンは、一般的なUnixレベルのRPC環境の一部です。

または、自分のバイトを振る舞うことができます。

gSOAPまたはXMLなどもここでアプリケーションに階層化されています。ネットワークトラフィックを凌駕することを目指しています。 (私がそれを管理できるのであれば、私自身のプロトコルを使うことを避ける傾向があります。)

そして、このことを何とかしていないにもかかわらず、ネットワーク内のバイトストリームにバージョン番号を刻んでくださいプロトコルを実装しています。

関連する問題