将InputStream数据转换为不同的数据类型

时间:2012-05-05 13:41:54

标签: ios xcode inputstream

我一直在使用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字节 - &gt;双,4字节 - &gt;浮。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用CoreFoundation.h类函数解决问题:

uint8_t * buffer;
buffer = (uint8_t *) malloc(8);
double tempDouble = CFConvertFloat64SwappedToHost(*((CFSwappedFloat64*)buffer));