0
unsigned intに32ビットの値を入れたいと思っています。私はこのプログラムを、32ビットと64ビットの整数で、小さなエンディアンと大きなエンディアンの両方で実行するplatfromsで実行します。ここで私は、これは大きなendnianとし、32ビットおよび64ビットの整数型で動作するようになると思い、私のコード32ビットからunit64への変換をC++で
void uCHarToInt(unsigned char* input, unsigned int* oputput)
{
memcpy(oputput, reinterpret_cast<unsigned int*>(&input), 4);
if (sizeof(unsigned int) == 8)
{
*oputput >>= 32;
}
}
ですが、私はリトルエンディアンについて確認していないとどのようにmemcpyのは、異なるプラットフォーム上で動作しますありません。より良い解決策はありませんか?
はなぜだと思いますワードサイズまたは受信側ホストのエンディアンに関係なく、正しく変換を行いますあなたはここに再解釈する必要がありますか?あなたが望む正確なサイズを持つことが保証されている 'uint32_t'をなぜ使いませんか? –
私はいくつかの古いコードを再利用し、IDはこのキャストを使用するために私に助言を与える..と私は、符号なしのintsを返す関数を持っていますが、それを変更する方が良いようです...これはすべてのプラットフォームで動作しますはい? void uCHarToInt(unsigned char * input、uint32_t * oputput) { \t memcpy(oputput、input、4); } –
コードについては忘れてください。あなたが達成しようとしていることについて何の言及もなしに、達成したいことを説明してください。明らかに、コードは奇妙なことです。 – gnasher729