【发布时间】:2014-04-12 23:34:38
【问题描述】:
我正在尝试将 unsigned long 转换为 char 向量。
std::vector<char> out(1024);
while(n < length)
{
for(int = 0; i < 32; i++)
{
//code...
unsigned long v0 = 0x9514a327;
//code...
}
memcpy( &out[n], &v0, sizeof( v0 ) );
}
out 在 while 循环中动态填充(out 存储 v0 的值)。我的问题是,订单已更改为:
out[0] = 0x27
out[1] = 0xa3
out[2] = 0x14
out[3] = 0x95
但我需要:
out[0] = 0x95
out[1] = 0x14
out[2] = 0xa3
out[3] = 0x27
我怎样才能以优雅的方式解决这个问题?
【问题讨论】:
-
您的代码无法编译,
v0在其范围之外使用。 -
您的问题称为字节序。您可以使用
htons在 memcpy 之前将您的值转换为大端(这是您所需要的)。
标签: c++ vector int endianness unsigned