2016-05-30 9 views
1

データベースから取得したデータを保存するためのテキストファイルを作成しました。16進数を対応するビットに変換する

これは私のコードです。

CreateFile(String.Format("{0}\\U{1:X8}_C{2}_F{3}_B{4:X16}.TXT", 
           userDir, 
           staffWeaponEntity.StaffID.Oid, 
           capsensepw, 
           fingerprintID, 
           staffWeaponEntity.WeaponID.WeaponTypeID.Oid)); 

これは私の出力

".\\Data\\Tmp\\00000004\\USER\\U00000002_C000000_F00000000_B0000000000000004.TXT" 

である私は、私はそれを行う必要がありますどのように0000000000001000.であるビットパターンのバイナリ値に00000004である最後の値を変換したいですか?

答えて

1

Convert.ToStringのオーバーロードを使用してベース(この場合はベース2)を受け入れ、String.PadLeftを使用してパディングゼロを追加できます。

CreateFile(String.Format("{0}\\U{1:X8}_C{2}_F{3}_B{4}.TXT", 
    userDir, 
    staffWeaponEntity.StaffID.Oid, 
    capsensepw, 
    fingerprintID, 
    Convert.ToString(staffWeaponEntity.WeaponID.WeaponTypeID.Oid, 2).PadLeft(16, '0')); 

また、バイナリで4100、ない1000あります。


EDIT

あなただけで対応するビットが点灯したいようです。これにはbit shiftingを使用できます。覚えておいて、使用している値は、1〜16

CreateFile(String.Format("{0}\\U{1:X8}_C{2}_F{3}_B{4}.TXT", 
    userDir, 
    staffWeaponEntity.StaffID.Oid, 
    capsensepw, 
    fingerprintID, 
    Convert.ToString(1 << (staffWeaponEntity.WeaponID.WeaponTypeID.Oid - 1), 2).PadLeft(16, '0')); 
+0

の間、私はこの方法を試してみましたしなければならないが、私の値は私の進値が7になると、私は代わりに、0000000000000101を取得します。4.あるとき、これはのみ動作します。 – active92

+0

@ active92よろしいですか?私は '111 'を得る。7.101のバイナリは5である。 – Rotem

+0

1 = 0000000000000001、2 = 0000000000000010、3 = 0000000000000100というような大きなパターンのバイナリ値である必要がある – active92

関連する問題