如何将字节从NSDATA转换为BigInt16?

| 我有一个NSDATA,它是一个音频缓冲区(BIG_ENDIAN),我试图获取缓冲区的每2个字节并将其转换为int_16格式,以在这些结果中应用编解码器。.我正在尝试以下操作:
-(NSData*)encodeSample:(NSData*)buffer
{

NSMutableData *backValue = [[NSMutableData alloc] init];

for (int i = 0; i < [buffer length]; i+=4) 
{

    if ( i+4 > [buffer length] )
    {
        break;
    }
    else 
    {

        NSRange range = {i,2};

        int16_t temp1 = OSReadBigInt16([buffer subdataWithRange:range], 0);
        int result1  = [self encode:temp1] & 0x0F; //codec call
        NSRange range2 = {i+2,2};
        int temp2 = OSReadBigInt16([buffer subdataWithRange:range2], 0);
        int result2 = [self encode:temp2] & 0x0F;
        Byte finalValue = (Byte) ((result1 << 4) | result2);

        [backValue appendBytes:&valorFinal length:sizeof(valorFinal)];

    }
我正在阅读函数OSReadBigInt16的Apple文档,并且我认为它不适用于NSDATA,而且我不知道该怎么做才能获取正确的值。 有人对如何从nsdata获取字节并将其转换为int_16有一个想法。     
已邀请:
        请参阅基础函数文档中的字节排序函数。有很多功能,例如
NSSwapIntToHost()
NSSwapShort()
要直接访问“ 3”实例存储的字节,您必须向其发送“ 4”消息,该消息将返回“ 5”     

要回复问题请先登录注册