C# 如何将字符/字符串读取为十六进制?

C# 如何将字符/字符串读取为十六进制?,c#,C#,用户在文本框中输入频率,我将其作为字符串读取。 然后将频率转换为十六进制等效值。 现在我想读取freqhex的最后两个元素,并将它们连接起来并存储为字节。 例如,如果用户输入频率282.000 MHz。FreqHex将存储00044D90。我想读取“90”并存储为字节。SS_Buf[15]应将90存储为字节 string frequency = freq_box.Text; byte[] SS_Buf = new byte[117]; string FreqHex = Convert.ToStr

用户在文本框中输入频率,我将其作为字符串读取。 然后将频率转换为十六进制等效值。 现在我想读取freqhex的最后两个元素,并将它们连接起来并存储为字节。 例如,如果用户输入频率282.000 MHz。FreqHex将存储00044D90。我想读取“90”并存储为字节。SS_Buf[15]应将90存储为字节

string frequency = freq_box.Text;
byte[] SS_Buf = new byte[117];
string FreqHex = Convert.ToString(int.Parse(frequency), 16);
SS_Buf[15] = byte (FreqHex[6]+FreqHex[7]); // trying to store as byte, it's not correct
嗨,实际上完整的代码是这样的:

string frequency = freq_box.Text;
        string[] strArr = null;
        strArr = frequency.Split('.');
        string FreqHex = Convert.ToString(int.Parse(strArr[0]+strArr[1]), 16);
        while(FreqHex.Length<8)
        {
            FreqHex = "0"+FreqHex;

        }
string frequency=freq\u box.Text;
字符串[]strArr=null;
strArr=频率分割('.');
字符串FreqHex=Convert.ToString(int.Parse(strArr[0]+strArr[1]),16);

而(FreqHex.Length实际上不需要转换为十六进制。您只需要一点掩蔽。请注意,所有内容都是用二进制表示的,尽管看起来可能不是这样

获取最后两个十六进制数字基本上就是获取最后最右边的8位。为此,请应用
0xff
1111111
二进制)掩码,并使用按位and运算符:

SS_Buf[15] = (byte)(Convert.ToInt32(frequency) & 0xff)
如果
频率
为44D90(十六进制),则为

0100 0100 1101 1001 0000
二进制

现在我们应用一个
0xff
掩码,它是

0000 0000 0000 1111 1111
现在,如果我们进行按位AND运算,我们得到:

0000 0000 0000 1001 0000

实际上不需要转换为十六进制。您只需要一点掩蔽。请注意,所有内容都是用二进制表示的,尽管看起来可能不是这样

获取最后两个十六进制数字基本上就是获取最后最右边的8位。为此,请应用
0xff
1111111
二进制)掩码,并使用按位and运算符:

SS_Buf[15] = (byte)(Convert.ToInt32(frequency) & 0xff)
如果
频率
为44D90(十六进制),则为

0100 0100 1101 1001 0000
二进制

现在我们应用一个
0xff
掩码,它是

0000 0000 0000 1111 1111
现在,如果我们进行按位AND运算,我们得到:

0000 0000 0000 1001 0000

您好,实际上完整的代码是这样的:string frequency=freq_box.Text;string[]strArr=null;strArr=frequency.Split('.');string FreqHex=Convert.ToString(int.Parse(strArr[0]+strArr[1]),16);while(FreqHex)。Length@JyotiYadav您不需要while循环。只需执行
(字节)(Convert.ToInt32(strArrr[0]+strArr[1])&0xff)
更一般地说,是按位and(
&
)可以被认为是一个“保存这些位”操作符。在
x=x&y
的情况下,也写为
x&=y
,设置为1的每个y位都将保留x中相应位的值,无论是1还是0。x的所有其他位都将设置为0。正如@Sweeper所示,此操作符是隔离扇区的一种非常有效的方法通过保留一个子序列,并将其余的子序列置零,一个位序列的ns。@JyotiYadav no不使用
frequency
,将其替换为
strArr[0]+strArr[1]
@JyotiYadav这是另一个问题。首先将整个位模式向右移动8次,然后应用相同的掩码,将得到4D.hi,实际上完整的代码如下:string frequency=freq\u box.Text;string[]strArr=null;strArr=frequency.Split('.);string FreqHex=Convert.ToString(int.Parse(strArr[0]+strArr[1]),16);while(FreqHex)。Length@JyotiYadav您不需要while循环。只需执行
(byte)(Convert.ToInt32(strArrr[0]+strArr[1])&0xff)
更一般地说,按位and(
&
)可以被认为是一个“保存这些位”操作符。在
x=x&y
的情况下,也写为
x&=y
,设置为1的每个y位都将保留x中相应位的值,无论是1还是0。x的所有其他位都将设置为0。正如@Sweeper所示,此操作符是隔离扇区的一种非常有效的方法通过保留一个子序列,并将其余的子序列置零,@JyotiYadav no不要使用
frequency
,将其替换为
strArr[0]+strArr[1]
@JyotiYadav,这是另一个问题。您首先将整个位模式向右移动8次,然后应用相同的掩码,您将得到4D。