1

私はObjective-CでInputStreamsを使用してきましたが、受信したデータの処理に間違った手順を踏んだようです。

整数、浮動小数点数、倍精度浮動小数点数などとして読み取られ、データ型に変換されるバイトのチャンクを受信して​​います。

これまでのところ、私のプロセスは次のようになっています。

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バイト->フロート。

前もって感謝します。

4

1 に答える 1

1

CoreFoundation.hクラス関数を使用して解決された問題:

uint8_t * buffer;
buffer = (uint8_t *) malloc(8);
double tempDouble = CFConvertFloat64SwappedToHost(*((CFSwappedFloat64*)buffer));
于 2012-05-07T22:04:24.167 に答える