2012-10-27 144 views
0

我想收到一个十六进制计算的:计算文本为十六进制

static int count = 0; 
    string s; 
    private void SetClock_Click(object sender, EventArgs e) 
    { 
     count++; 
     label5.Text = count.ToString("X2"); 
     DateTime time = DateTime.Now; 
     s = "4D-" + "1A-" + "2B-" + "3C-" +(label5.Text); 
     txtSend.Text = s; 
    } 

之后我删除“ - ”之间的代码和我想补充后“(label5十六进制计算结果。文本)“:

4D 1A 2B 3C(label5.text)(上六角结果(4D 1A 2B 3C(label5.text)))。

我不知道如何告诉我的计划,以获得不同的字节 - 4D/1A/2B ......其实,这是我们可以选择的“十六进制的功能”科学模式计算器做,键入所有这些4D 1A ..按XOR。

+0

我没有得到这个问题。你的意思是你想有一个文本框获取十六进制字符串作为输入? –

回答

2

正如我理解正确的话,你想对你的s值应用XOR和存储其结果HEXtxtSend.Text如果是的话,你可以试试这个

s = "4D-" + "1A-" + "2B-" + "3C-" +(label5.Text); 
string [] allHaxValues= s.Split(new char[]{'-'}); 
int result = 0; 

foreach(string haxValue in allHaxValues) 
{ 
    result = result^Convert.ToInt32(haxValue, 16); 
} 
txtSend.Text = result.ToString("X"); 

IF label5.Text包含1那么结果将是41

result = 4D XOR 1A XOR 2B XOR 3C XOR 1 
+0

如何声明“s”为var? –

+0

@NikolaObretenov否需要在您的方法中声明s为var。 –

+0

它给了我一个错误:类型和标识符在foreach语句中都是必需的。该错误链接在“in”这里:“foreach(var haxValue allHaxValues)” –

0

我认为这是可能是你正在寻找,注意,我用' '更换'-'这样你就可以在你的代码中使用此。

count++; 
label5.Text = count.ToString("X2"); 
DateTime time = DateTime.Now; 
s = "4D-" + "1A-" + "2B-" + "3C-" + label5.Text; 
s = s.Replace('-', ' '); 
string[] strings = s.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries); 
List<int> ints = strings.Select(a => int.Parse(a,System.Globalization.NumberStyles.AllowHexSpecifier)).ToList<int>(); 
int xor = ints[0]; 
for(int i=1;i<ints.Count;i++) 
{ 
     xor ^= ints[i]; 
} 
txtSend.Text = s + " (" + xor.ToString("X2") + ")"; 
+0

尼克我觉得你的代码将工作过,但我已经通过Yograj得到它:)谢谢你太 –

+0

@NikolaObretenov这是确定的,最重要的是你解决你的问题;-) –