首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#十进制到十六进制&十六进制到十进制/十六进制到ascii

c#十进制到十六进制&十六进制到十进制/十六进制到ascii
EN

Stack Overflow用户
提问于 2011-10-18 01:43:24
回答 3查看 11.2K关注 0票数 2

我正在尝试做一些转换,并希望使用Linq来实现以下功能,

Decimal to Hex,Decimal to Ascii,Hex to Decimal,Hex to Ascii

有没有人可以教我如何在Linq中有效地做到这一点?我将把输出显示到文本框中。

此外,我还有一个前缀和分隔符字段,也需要包括在内,

示例:

代码语言:javascript
复制
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()));

谢谢大家。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-18 01:57:52

LINQ用于查询集合,而不是转换值。说你想用LINQ把X转换成Y是错误的。

也就是说,以下是您需要的构建块:

代码语言:javascript
复制
// 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");

然后执行一些操作,比如在十进制形式到十六进制形式之间进行转换:

代码语言:javascript
复制
var inDecimal = "12345";
var asInt = Int32.Parse(inDecimal);
var asHex = asInt.ToString("x");

你的"ASCII到(十六进制)十进制“的转换可以用一点LINQ来完成,使用上面的构建块。假设您指的是每个字符的ASCII代码的(十六进制)十进制表示:

代码语言:javascript
复制
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!"
票数 7
EN

Stack Overflow用户

发布于 2011-10-18 01:45:56

我真的不明白为什么你需要在这里使用LINQ,但是你可以像这样进行十进制和十六进制之间的转换:

代码语言:javascript
复制
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);
票数 2
EN

Stack Overflow用户

发布于 2011-10-18 01:47:08

将数值转换成十六进制是非常简单的。

代码语言:javascript
复制
Decimal d = 10M;
d.ToString("X")

我完全不明白你所说的“十进制到ascii”是什么意思。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7797477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档