[英]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,
當它應該是32768
時unsigned 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.