如何在C ++中将无符号长数组转换为字节?

时间:2010-06-30 03:16:23

标签: c++

如何在C ++中将无符号长数组转换为字节?我正在使用VS2008 C ++进行开发。

编辑:

我需要评估这个转换数字的大小,我想把这个长数组分成29byte数组。
例如,我们有长数组= 12345;
它应该转换为字节,然后我需要将其长度除以29并查看它是多少包。

丢失数据非常重要,但现在我只想获得结果。

1 个答案:

答案 0 :(得分:2)

long array[SOME_SIZE];
char* ptr = reinterpret_cast<char*>( array ); // or just ( char* )array; in C

// PC is little-endian platform
for ( size_t i = 0; i < SOME_SIZE*sizeof( long ); i++ )
{
    printf( "%x", ptr[i] );
}

这里有更强大的解决方案,没有字节顺序(这不包括奇怪的DSP设备,其中char可以是32位实体,这些是特殊的):

long array[SOME_SIZE];

for ( size_t i = 0; i < SOME_SIZE; i++ )
{
    for ( size_t j = 0; j < sizeof( long ); j++ )
    {
        // my characters are 8 bit
        printf( "%x", (( array[i] >> ( j << 3 )) & 0xff ));
    }
}