一部の C++ を C# コードに変換していたところ、以下の定義が表示されました。
#define x 'liaM'
まず、この単一引用符で囲まれた定数は何を意味するのでしょうか? c# で文字列定数にしますか?
次に、この定数は C++ の uint 変数に値として割り当てられます。それはどのように機能しますか?
uint m = x;
これはFOURCCと呼ばれることもあります。文字列から mmioStringToFOURCC と呼ばれるFOURCCに変換できる Windows API があり、同じことを行う C# コードを次に示します。
public static int ChunkIdentifierToInt32(string s)
{
if (s.Length != 4) throw new ArgumentException("Must be a four character string");
var bytes = Encoding.UTF8.GetBytes(s);
if (bytes.Length != 4) throw new ArgumentException("Must encode to exactly four bytes");
return BitConverter.ToInt32(bytes, 0);
}