Val*_*tin 1 c++ bit-manipulation
#include <iostream>
#include <bitset>
#include <cstring>
using namespace std;
int main()
{
uint8_t a = 1;
uint16_t b = 0;
memcpy(&b, &a, 1);
cout << bitset<16>(b) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个的输出是0000000000000001.但是,我会想到memcpy把刚才复制a到的第一个字节b,并b要0000000100000000代替.这里发生了什么?
memcpyvoid *为每个参数取一个a ,因此它没有关于底层变量类型的信息.它完全复制指定的字节数.
你看到的原因0x0001,而不是0x0100可能是因为你的系统使用little endian字节顺序,这意味着至少显著字节是第一位的.
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |