簡體   English   中英

memcpy from Byte * to unsigned int是Reversing Byte Order

[英]memcpy from Byte * to unsigned int Is Reversing Byte Order

我有一個CFBitVector看起來像'100000000000000'我將字節數組傳遞給CFBitVectorGetBits ,然后包含來自此CFBitVector的值。 在此調用之后, bytes[2]看起來像:

bytes[0] == '0x80'
bytes[1] == '0x00'

這正是我所期待的。 但是,當將bytes[2]的內容復制到unsigned int bytesValue,當它應該是32768unsigned int bytesValue,該值為128 十進制值128由十六進制值0x0080 基本上,執行memcpy ,字節順序似乎是相反的。 這里發生了什么? 這只是字節序的問題嗎?

謝謝

CFMutableBitVectorRef bitVector = CFBitVectorCreateMutable(kCFAllocatorDefault, 16);
CFBitVectorSetCount(bitVector, 16);

CFBitVectorSetBitAtIndex(bitVector, 0, 1);

CFRange range = CFRangeMake(0, 16);
Byte bytes[2] = {0,0};
unsigned int bytesValue = 0;

CFBitVectorGetBits(bitVector, range, bytes);
memcpy(&bytesValue, bytes, sizeof(bytes));

return bytesValue;

這里發生了什么? 這只是字節序的問題嗎?

是。

你的電腦是小端的。 16位值32768將在內存中表示為:

00 80

在一個小端機器上。 你有:

80 00

相反,正如你所看到的那樣代表128。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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