我正在尝试做一些转换,并希望使用Linq来实现以下功能,
Decimal to Hex,Decimal to Ascii,Hex to Decimal,Hex to Ascii
有没有人可以教我如何在Linq中有效地做到这一点?我将把输出显示到文本框中。
此外,我还有一个前缀和分隔符字段,也需要包括在内,
示例:
string input = txtAscii.Text;
string delim = txtDelimiter.Text;
string prefix = txtPrefix.Text;
if (checkBox1.Checked == true && string.IsNullOrEmpty(delim)) delim = " ";
//Linq, Ascii to Decimal.
txtDecimal.Text = string.Join(delim, input.Select(c => prefix + ((int)c).ToString()));谢谢大家。
发布于 2011-10-18 01:57:52
LINQ用于查询集合,而不是转换值。说你想用LINQ把X转换成Y是错误的。
也就是说,以下是您需要的构建块:
// string in decimal form to int
Int32.Parse("12345");
// string in hexadecimal form to int
Int32.Parse("ABCDE", NumberStyles.HexNumber);
// int to string in decimal form
12345.ToString();
// int to string in hexadecimal form
12345.ToString("x");然后执行一些操作,比如在十进制形式到十六进制形式之间进行转换:
var inDecimal = "12345";
var asInt = Int32.Parse(inDecimal);
var asHex = asInt.ToString("x");你的"ASCII到(十六进制)十进制“的转换可以用一点LINQ来完成,使用上面的构建块。假设您指的是每个字符的ASCII代码的(十六进制)十进制表示:
var str = "FOOBAR!";
var asAsciiInt = String.Join(" ", str.Select(c => (int)c));
var asAsciiHex = String.Join(" ", str.Select(c => ((int)c).ToString("x2")));
// asAsciiInt == "70 79 79 66 65 82 33"
// asAsciiHex == "46 4f 4f 42 41 52 21"
var asciiInt = "70 79 79 66 65 82 33";
var charStrs = asciiInt.Split();
var asStr = String.Concat(charStrs.Select(cs => (char)Int32.Parse(cs)));
// asStr == "FOOBAR!"
var asciiHex = "46 4f 4f 42 41 52 21";
var charStrs = asciiHex.Split();
var asStr = String.Concat(charStrs.Select(cs => (char)Int32.Parse(cs, NumberStyles.HexNumber)));
// asStr == "FOOBAR!"发布于 2011-10-18 01:45:56
我真的不明白为什么你需要在这里使用LINQ,但是你可以像这样进行十进制和十六进制之间的转换:
decimal dec1 = 182;
//convert decimal as a hex in a string variable
string hex = dec.ToString("X");
//convert the hex string back to the decimal
decimal dec2 = decimal.Parse(hex, System.Globalization.NumberStyles.HexNumber);发布于 2011-10-18 01:47:08
将数值转换成十六进制是非常简单的。
Decimal d = 10M;
d.ToString("X")我完全不明白你所说的“十进制到ascii”是什么意思。
https://stackoverflow.com/questions/7797477
复制相似问题