将十六进制转换为相应的位

时间:2016-05-30 07:28:04

标签: c# binary hex

我创建了一个文本文件来存储从数据库中检索的一些数据。

这是我的代码。

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"

我想将最后一个值00000004转换为位模式二进制值0000000000001000。我应该怎么做?

1 个答案:

答案 0 :(得分: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

修改

看起来你只是希望相应的位亮起来。我们可以使用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'));