我正在處理一個爲測量功率提供可寫特性的硬件外設。根據硬件供應商測量功率的規格應該以格式「0xnn」發送。我不知道如何將負整數(-59)轉換爲1字節的十六進制表示(0xnn)。向外設寫入負整數作爲0xnn十六進制
到目前爲止,我已經嘗試下面
int iPower = -59;
int16_t power = CFSwapInt16HostToBig(iPower);
NSData *powerData = [NSData dataWithBytes:&power length:sizeof(power)];
但這寫入0xFF的進入外周即十進制數255。任何想法?
即使嘗試通過下面的代碼發送原始字節,並達到0xC5這是十進制197。
NSInteger index = -59;
NSData *powerData = [NSData dataWithBytes:&index length:sizeof(index)];
在哪個變量負整數(-59)你存儲?你是以char還是int存儲的?變量可以採用的最大值是多少? – 2013-12-21 06:39:12
您確定需要**兩個**字節和十六進制表示嗎?我假設設備期望的是** **一個**字節,表示爲2的補碼有符號整數。 (十六進制符號僅僅是爲了人類的可讀性。) – 2013-12-21 06:39:23
@ H2CO3你是對的。它只是一個字節。我不知道如何發送單字節的負整數。任何想法? – Abhinav