根据字符串中的位置将数字从范围分配到字母

时间:2015-09-23 13:44:06

标签: c#

我有一段代码,应该将数字0-255均匀地分配给字符串中的字母。第一个lettter应该是0而最后一个应该是255.但是,使用我的代码(很可能是由于将数字舍入到某处),我得到的数字更低,如最大252。这是我的代码:

string x = "abcde";
(255 / (x.Length - 1)) * x.IndexOf("e")

这应该给出255

3 个答案:

答案 0 :(得分:2)

255 / (x.Length - 1)是一个整数操作,因此255 / 463而不是63,75

您需要通过将f附加到第一个号码或.0来告诉编译器您需要进行浮点处理:

255.0 / (x.Length - 1)

255f / (x.Length - 1)

答案 1 :(得分:0)

要解决此问题,您需要向double投一件事:

(int)((255 / (double)(x.Length - 1)) * x.IndexOf("e"))

(int)((255d / (x.Length - 1)) * x.IndexOf("e"))

(int)((255.0 / (x.Length - 1)) * x.IndexOf("e"))

测试:https://ideone.com/ePyo8J

答案 2 :(得分:0)

LINQ

static IEnumerable<int> WordToIntList(string s)
{
    return s.ToCharArray().ToList().Select((c, i) => (int) (255.0*(i))/(s.Length - 1));
}