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

本文关键字:数字 范围 分配 位置 字符串 | 更新日期: 2023-09-27 18:14:04

我有一段代码,它应该均匀地将数字0-255分配给字符串中的字母。第一个字母应为0,最后一个字母应为255。然而,在我的代码中(很可能是由于将数字四舍五入的缘故),我得到的最大值是252这样的较低数字。这是我的代码:

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

这个值应该是255

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

255 / (x.Length - 1)是一个整型运算,因此你得到的255 / 463而不是63,75

你需要告诉编译器你想要一些浮点处理,通过将f附加到你的第一个数字或.0:

255.0 / (x.Length - 1)

255f / (x.Length - 1)

要解决这个问题,您需要像这样将一件事转换为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

LINQ

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