[英]Convert binary two's complement data into integer in objective-c
我有一些來自加速度計的二進制數據(二進制補碼),我需要將其轉換為整數。 是否有執行此操作的標准庫函數,或者我需要編寫自己的代碼?
例如:我從加速度計接收到一個NSData對象,當轉換為十六進制時,它看起來像這樣:
C0088001803F
這是3個2字節數據塊的串聯:
x = C008
y = 8001
z = 803F
僅關注x軸:
hex = C008
decimal = 49160
binary = 1100000000001000
twos complement = -16376
是否有標准功能可以將C008中的二進制補碼直接轉換為-16376?
謝謝。
就像是:
const int8_t* bytes = (const int8_t*) [nsDataObject bytes];
int32_t x = (bytes[0] << 8) + (0x0FF & bytes[1]);
x = x << 16;
x = x >> 16;
int32_t y = (bytes[2] << 8) + (0x0FF & bytes[3]);
y = y << 16;
y = y >> 16;
int32_t z = (bytes[4] << 8) + (0x0FF & bytes[5]);
z = z << 16;
z = z >> 16;
假定值確實是問題中建議的“大端”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.