、それらが単純な整数の比較と一度に比較することができ、switch
文で使用されるので、依然としてヒトのビットを維持しながら、符号なし32ビット整数にパック短い文字列/チャーアレイは、かなり有用です可読性。短い文字列を32ビット整数に変換する最も効率的な方法は何ですか?多くの目的のために
32ビット整数にこれらの短い文字列を変換するための最も一般的な方法は、シフトすることである/または:長すぎる
#include <stdint.h>
uint32_t quadchar(const char* _str)
{
uint32_t result = 0;
for(size_t i=0; i<4; i++)
{
if(_str[i] == 0)
return result;
result = (result << 8) | _str[i];
}
return result;
}
文字列は、切り捨てられます。
これまでのところは良いが、これは少し時間がかかりランタイム上で行う必要があります。 コンパイル時にもこれを実行できますか? C++ 11のよう
。すでにC++ 11でこれを行う(再帰的に)方法を示す答えがあります。 C++ 03の場合、良い構文を得ることは事実上不可能ですが、C++ 03のソリューションの1つは、いくつかのスクリプトを使ったソースコードの前処理です。 –
ユニオンメソッドは未定義の動作であり、その結果はCPUのエンディアンに依存します。 – Barmar
@Barmar:true、thx。私はこの通路を削除しました。 – user2328447