我有一个使用十进制编码文本的字符串,如何使用C#解码小数?
字符串如下:
"03211212122771217573772312402503648" - The original C# line compiled.
0 32 1 1 2 1 2 1 2 2 77 121 75 73 77 2 3 1 2 4 0 2 5 0 3 6 4 8 - The spaces between each ASCII character / decimal set.
中间的所有空格都是ASCII字符之间的空格。
感谢。
编辑:
我想我的问题不明确......
它目前采用字符串中的数字格式,编码为char。
我想解码其中的数据以发送到服务器。
服务器不接受数字,而是想要原始数据,我将如何进行此操作?喜欢:77 - M 121 - y等...
我该怎么做?
答案 0 :(得分:2)
这是不可能的。通过在没有分隔符的情况下连接值,您省略了解码字符串所需的信息。
如果我们从一开始就检查字符串,那么在你无法确定其含义之前,你就不会走得太远。
如果您知道没有值与前导零一起存储,则第一个值可以确定为0
,例如032
。
第二个值不再可能确定原始内容。可能是3
,32
,321
,甚至321121212277121757377
。
如果在数字之间添加分隔符,则很容易解析字符串:
int[] values = str.Split('-').Select(Int32.Parse).ToArray();
代码说明:
str.Split('-')
返回一个字符串数组,其中每个字符串都包含一个数字。
.Select(Int32.Parse)
会将每个字符串解析为一个数字,它是.Select(s => Int32.Parse(s))
的缩写形式。不需要lambda表达式,因为Int32.Parse
方法已经适合为Select
方法创建委托。
.ToArray()
将IEnumerable<int>
Select
转换为整数数组。
答案 1 :(得分:1)
如果在不同的数字之间加上空格,可以使用以下内容:
IEnumerable<int> numbers = "1 2 3 4 5".Split().Select(s => int.Parse(s));