最近做一個項目 要傳udp包? 包里包含很多信息 就是把一些信息用byte表示?
所以包含很多byte的轉換 這里記錄一下? 在網上沒查到 只有int的轉換
這里的例子是8個字節(jié)代表一個long long數(shù)據(jù)。
long long轉為byte數(shù)組
+ (Byte*)longlongToByte:(long long)value
{
? ? Byte * byte = malloc(8);
? ? byte[0] = ((value>>56) & 0xFF);
? ? byte[1] = ((value>>48) & 0xFF);
? ? byte[2] = ((value>>40) & 0xFF);
? ? byte[3] = ((value>>32) & 0xFF);
? ? byte[4] = ((value>>24) & 0xFF);
? ? byte[5] = ((value>>16) & 0xFF);
? ? byte[6] = ((value>>8)? & 0xFF);
? ? byte[7] = (value & 0xFF);
? ? return byte;
}
byte數(shù)組轉為long long
+ (longlong)byteToLongLong:(Byte*)byte
{
? ? longlongvalue =0;
? ? value = (((longlong)byte[0] <<56&0xFF00000000000000L)|
?? ? ? ? ? ? ((longlong)byte[1] <<48&0xFF000000000000L)|
? ? ((longlong)byte[2] <<40&0xFF0000000000L)|
? ? ((longlong)byte[3] <<32&0xFF00000000L)|
? ? ((longlong)byte[4] <<24&0xFF000000L)|
? ? ((longlong)byte[5] <<16&0xFF0000L)|
? ? ((longlong)byte[6] <<8&0xFF00L)|
? ? ((longlong)byte[7] &0xFFL));
? ? returnvalue;
}