簡體   English   中英

在Objective-C中將二進制二進制補碼數據轉換為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM