Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中将十六进制值转换为位位置[BitMapping]?_C#_Bitmap_Hex_Byte - Fatal编程技术网

如何在C#中将十六进制值转换为位位置[BitMapping]?

如何在C#中将十六进制值转换为位位置[BitMapping]?,c#,bitmap,hex,byte,C#,Bitmap,Hex,Byte,我的问题是: 我有一个数组,更准确地说是一个字典,其中关键INT是一个十六进制值,字符串是该位的含义。例如: Key, Value 1 Cat 2 Dog 4 Ant 8 10 20 40 80 Whale ... 我需要将十六进制值转换为位位置。即: Bit 1 Cat 2 Dog 3 Ant 8 Whale 我怎么能在C#中做到这一点 谢谢大家。我不确定你们到底想要什么,但你们考虑过

我的问题是:

我有一个数组,更准确地说是一个
字典
,其中关键INT是一个十六进制值,字符串是该位的含义。例如:

Key,    Value
1       Cat
2       Dog
4       Ant
8       
10
20
40
80      Whale
...
我需要将十六进制值转换为位位置。即:

Bit
1      Cat
2      Dog
3      Ant
8      Whale
我怎么能在C#中做到这一点


谢谢大家。

我不确定你们到底想要什么,但你们考虑过使用一个新的吗

如果你有一个十六进制字符串,把它转换成一个int,然后你就可以知道哪个位是开的还是关的

转换为字符串:

string hexString = "80";
int hexInt = Convert.ToInt32(hexString, 16);
检查第n位:

// Let's say you want to see if the 8th bit is on.
if (((1 << 7) & hexInt) > 0)
{
    // our 8th bit is on
}
else
{
    // our 8th bit is off
}
//假设您想查看第8位是否打开。
如果((10)
{
//我们的第八位开始了
}
其他的
{
//我们的第八位被取消了
}
我建议使用如下方法检查第n位:

public bool checkBit(int bitPosition, int value)
{
    // returns true if bit is on, else false
    return (((1 << bitPosition) & value) > 0);
}
公共布尔校验位(int位位置,int值)
{
//如果位为on,则返回true,否则返回false
回报率((10);
}
请注意,第一个位的位置是0。因此,无论要检查哪个位的位置,都要减去1

同样,仍然不能确切地确定你要做什么,但是如果你想得到第n位的十六进制值,你可以这样做:

// remember that the first bit position will be 0.
public string getHexStringForBitPosition(int bitPosition)
{
     // we can't go higher than 64.
     if (bitPosition > 63)
         return "0";
     ulong myVal = 1 << bitPosition;
     return myVal.ToString("X");
}
//请记住,第一位的位置是0。
公共字符串GetHextStringForBitPosition(int bitPosition)
{
//我们不能超过64。
如果(位位置>63)
返回“0”;

ulong myVal=1您尝试了什么?显示您的代码。有具体问题吗?这不是免费编程服务。我的问题是我们不是您的免费编程服务。显示您尝试了什么。好的,也许我不够清楚。二进制的十六进制“80”是“1000 0000”。也就是第8位。我不知道如何将表示特定位位置的十六进制转换为十进制。在这种情况下,二进制中的“80”是“1000 0000”,因此是第8位。我该怎么做?如果您想检查特定位位置的值,我更新了答案。
// remember that the first bit position will be 0.
public string getHexStringForBitPosition(int bitPosition)
{
     // we can't go higher than 64.
     if (bitPosition > 63)
         return "0";
     ulong myVal = 1 << bitPosition;
     return myVal.ToString("X");
}