0

タイトルが示唆するように、基本的には、共用体を使用して、char配列をunsigned long intに変換します(つまり、unsigned long intとして読み取ります)。

union {
    char buffer[8];
    unsigned long int buffer_ui;
} char_array_ui;

私は8文字をchar配列に読み込み、後でそれらの8文字の値をunsignedlongintとして返します。(好奇心旺盛な人のために、それは私が/ dev / urandomからcharsを読んでいるからです)。これは安全ですか?私のプログラムに入る可能性のあるものはありますか?

4

1 に答える 1

1

注意すべき2つのこと:

  • サイズが8バイトである限り、これは正しいunsigned longです。すべてのプラットフォームでそうであるとは限りません。
  • エンディアンはプラットフォームによって異なる可能性があるため、結果も異なります。データをとして読み取る場合unsigned long、正しい結果を生成するために自動的に処理されますが、バイトごとに読み取る場合、順序はバイトを格納する方法です。
于 2013-03-13T22:15:28.947 に答える