【问题标题】:Convert hex to corresponding bit将十六进制转换为相应的位
【发布时间】:2016-09-27 22:41:21
【问题描述】:

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

这是我的代码。

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。我该怎么做?

【问题讨论】:

    标签: c# binary hex


    【解决方案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'));
    

    【讨论】:

    • 我已经尝试过这种方式,但这仅在我的值为 4 时有效。当我的十六进制值变为 7 时。我将得到 0000000000000101。
    • @active92 你确定吗?我得到111 为 7。101 二进制是 5。
    • 我需要它是大模式二进制值,这意味着 1= 0000000000000001, 2=0000000000000010, 3= 0000000000000100 等等
    • 我和谷歌似乎都不知道 big pattern binary 是什么意思,所以请解释一下。您的示例显示了一个用零填充最多 16 位的二进制值。
    • 哦,我明白了,你想要相应的位。
    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多