希望我能为您提供帮助,我有一个标签显示二进制值。
示例:"1000010101"
,此数据,我在读时用倒序表示。也就是说,从右到左开始,二进制数是动态的,因此它并不总是相同的。
直到现在这是我的主意,但这并没有给我任何价值
for (int i = lbl_conversion.Text.Length; i > 0; i--)
{
if (st[i] == 1)
{
MessageBox("1");
}
else
{
MessageBox("0");
}
}
我想要的是从左到右逐个字符地读取并知道它是"1"
还是"0"
,然后进行比较,有人可以支持我获得该结果吗?
谢谢。
答案 0 :(得分:2)
由于string
是基于从零开始的,因此正确的for
循环将是
// Note "- 1" and ">="
for (int i = lbl_conversion.Text.Length - 1; i >= 0; --i)
if (st[i] == '1') //DONE: comparing with character, not integer
{
MessageBox("1");
}
else
{
MessageBox("0");
}
或者您也可以Reverse
字符串(在 Linq 的帮助下):
// Let's read each character in reversed order
foreach (char c in lbl_conversion.Text.Reverse())
MessageBox(c.ToString());
答案 1 :(得分:0)
再增加一个(类似于之前发布的内容)
string s="10111011";
s.Reverse().ToList().ForEach(ch=>Console.WriteLine(ch=='1'?"A":"0"));
答案 2 :(得分:0)
当您需要从右到左读取字符串时,通常您知道必须读取的字符数。
我有这个功能。
private string GetValue(string strValor, int lenght)
{
if (strValor.Length > lenght)
return strValor.Substring(strValor.Length - lenght, lenght);
return strValor;
}
示例:GetValue(“ R6C5736423792”,10);返回“ 5736423792”