在Objective-c(iOS)中,字节数组为短值,反之亦然

在Objective-c(iOS)中,字节数组为短值,反之亦然,ios,objective-c,Ios,Objective C,我将字节数组(NSMutableData)转换为短值 +(short)byteArrayToShort:(NSMutableData *)paRawBytes offset:(int)piOffset{ int iRetVal = -1; int8_t *byteArray = [paRawBytes mutableBytes]; int iLow; int iHigh; if(CFByteOrderGetCurrent() == CFByteOrderBigEndian) {

我将字节数组(NSMutableData)转换为短值

+(short)byteArrayToShort:(NSMutableData *)paRawBytes offset:(int)piOffset{

int iRetVal = -1;

int8_t *byteArray = [paRawBytes mutableBytes];

int iLow;
int iHigh;

if(CFByteOrderGetCurrent() == CFByteOrderBigEndian)
{
    iLow  = byteArray[piOffset + 1];
    iHigh = byteArray[piOffset + 0];
}
else
{
    iLow  = byteArray[piOffset + 0];
    iHigh = byteArray[piOffset + 1];
}

// Merge high-order and low-order byte to form a 16-bit double value.
iRetVal = (iHigh << 8) | (0xFF & iLow);

return (short)iRetVal;
}
}

请告诉我这是不是正确的方式。。。
提前感谢

我想这取决于数据最初存储在
NSMutableData
中的格式。谢谢您的评论。但当数据到来时,我必须转换成字节数组的短值,小值还是大值?您的代码假设它是本地端,但数据可能来自网络,可能是大端。
+(int8_t *)shortToByteArray:(short)piValueToConvert
{
int8_t * aRetVal;

Byte iLowest;
Byte iHigh;

iLowest = (Byte)(piValueToConvert & 0xFF);
iHigh    = (Byte)((piValueToConvert >> 8) & 0xFF);

if(CFByteOrderGetCurrent() == CFByteOrderBigEndian)
{
    aRetVal[1] = iLowest;
    aRetVal[0] = iHigh;
}
else
{
    aRetVal[0] = iLowest;
    aRetVal[1] = iHigh;
}


return aRetVal;