1
我有4個字節的數據(存儲爲無符號整數),我想使用它。將緩衝區轉換爲無符號整型並使用位掩碼
當是這種數據的1個字節,這已被使用解決:
//Java
buffer.get() & 0xFF
//Objective-C
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 1)];
uint32_t payloadLength = buffer & 0xFFu;
//data = d1021b53
//buffer = 897307; payloadLength: 27
在Java中,爲4個字節,這已被使用來完成:
//Java
buffer.getInt() & 0xFFFFFFFFL
//Current not working Objective-C code
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 4)];
uint32_t payloadLength = CFSwapInt32BigToHost(buffer);
//data: 0103940f b7626361
//buffer = 1656164244; payloadLength: 2484057954 (should be = ~80)
對於Objective- C/C,我很難處理4個字節和位掩碼。
任何人有任何幫助嗎?
我沒有使用這個喜悅。我已經改變了原來反映改變使用unsigned int(如它應該)的objective-c 1字節示例。 當我嘗試使用CFSwapInt32BigToHost(或Little)與4字節值時,結果是無法理解的。即使在上面的1字節示例中使用它也不起作用。 關於如何複製java 0xFFFFFFFF位掩碼的其他建議? –
在這種情況下,不需要使用位掩碼。你能編輯你的問題嗎(因爲把代碼放在註釋中並不真正起作用),根據這個答案顯示你現在的代碼,並且包含NSLog的結果(@「%@ \ n%8x \ n%8x 「,data,buffer,payloadLength)'? (如果數據很長,請刪除一些'data'的轉儲文件) – CRD
我編輯了這篇文章以顯示示例值,並顯示它現在是什麼,哪些不起作用。 –