我正在写一些MIDI数据,我必须进行一些int - > byte转换并切换到big endian。现在,我正在做它喜欢:将int转换为字节并有效切换endian
int tempo = 500000;
char* a = (char*)&tempo;
//reverse it
inverse(a, 3);
[myMutableData appendBytes:a length:3];
和反函数:
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--;
}
}
它的工作原理,但它不是真正的干净,我不喜欢,我不得不指定3
两次(因为我有很高的知道它将结束多少字节)。
有没有更方便的方法我应该接近这个?
好了 - 这看起来不错 - 但我有我的限制ç技能设置它的麻烦。你能用一行代码示例帮忙吗?调用'tempo'交换?转换到char *的地方在哪里? – 2011-05-06 07:47:34
@jn_pdx:请参阅编辑答案 – JeremyP 2011-05-06 08:13:10