jn_*_*pdx 3 c objective-c endianness
我必须做一些int - >字节转换并切换到big endian来处理我正在写的一些MIDI数据.现在,我这样做:
int tempo = 500000;
char* a = (char*)&tempo;
//reverse it
inverse(a, 3);
[myMutableData appendBytes:a length:3];
Run Code Online (Sandbox Code Playgroud)
和反函数:
void inverse(char inver_a[],int j)
{
int i,temp;
j--;
for(i=0;i<(j/2);i++)
{
temp=inver_a[i];
inver_a[i]=inver_a[j];
inver_a[j]=temp;
j--;
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但它不是真正的干净,我不喜欢我必须指定3两个时间(因为我很高兴知道它将结束多少字节).
有没有更便捷的方式来接近这个?
Jer*_*myP 14
int32_t unswapped = 0x12345678;
int32_t swapped = CFSwapInt32HostToBig(unswapped);
char* a = (char*) &swapped;
[myMutableData appendBytes:a length:sizeof(int32_t)];
Run Code Online (Sandbox Code Playgroud)