2012-03-22 7 views
0

私はC#でアクセスできるユニークな32ビット整数を探しています。整数は特定のコンピュータに固有でなければなりません。衝突耐性である必要はありません。コンピュータ一意の整数

私はMACアドレスとProcessorIdを見ましたが、どちらもInt32として保存するには大きすぎます。 他の提案(前述の識別子を収まるように切り捨てる以外)

+0

AFAIKあなたが一意に見せなければならない一貫して(すべてのPC上で)見つけようとする数字は、衝突耐性を意図しているので長すぎます。 4バイトは現実的には大量のものを識別するのに十分な長さではありません。 –

+0

32ビットでなくてもいいと思う。それは変更するオプションではありませんか? – payo

+7

衝突耐性である必要がない場合は、すべての値に42を使用してください。 – Slugart

答えて

4

使用するMACアドレスおよび/またはprocessorIDを取得し、32ビット値を生成するハッシュ関数によって実行します。

あなたが衝突を心配していないので、単純なCRC32がおそらく仕事をするでしょう。

私が役に立ちましたら、CRC32 hereの便利な実装が見つかりました。

+0

良い提案。ただし、adminアカウントは通常のアカウントとは異なるハードウェアIDを取得するため、アカウントの実行には注意が必要です。 –

+0

ハッシング:なぜ地球上で私はそれを考えなかったのですか?ありがとう! – CJxD

関連する問題