2012-05-05 7 views
1

私はObjective-CでInputStreamを扱っており、受信したデータの処理に間違ったステップを踏んだようです。InputStreamデータを別のデータ型に変換する

私が読んで、データ型に変換されるバイトのチャンク、整数として、山車、ダブルスなどを受け付けております

これまでのところ、私のプロセスは、このようなものです:

readBuffer = (uint8_t *) malloc(4); 
memset(readBuffer, 0, 4); 
while (length < byteLength) { 
    length = [InputStream read:readBuffer 4]; 
} 
[something fourByteUint8ToLong:readBuffer]; 

へ順にいくつかは4バイトから長時間に変換する

- (long) fourByteUint8ToLong:(uint8_t *) buffer 
{ 
    long temp = 0; 
    temp |= buffer[0] & 0xFF; 
    temp <<= 8; 
    temp |= buffer[1] & 0xFF; 
    temp <<= 8; 
    temp |= buffer[2] & 0xFF; 
    temp <<= 8; 
    temp |= buffer[3] & 0xFF; 
    return temp; 
} 

objective-Cクラスを使用してこれを処理する簡単な方法はありませんか?

その場合はどうすればよいですか? 8バイト→ダブル、4バイト→フロート

ありがとうございます。 CoreFoundation.hクラスの機能を使用することによって解決

答えて

1

問題:

uint8_t * buffer; 
buffer = (uint8_t *) malloc(8); 
double tempDouble = CFConvertFloat64SwappedToHost(*((CFSwappedFloat64*)buffer)); 
関連する問題