我目前正在制作游戏,但我似乎无法从文本文件中读取值。出于某种原因,当我读取该值时,它会给我该值的 ASCII 代码,而不是我将其写入文件时的实际值本身。我已经尝试了所有的 ASCII 转换函数和字符串转换函数,但我似乎无法弄明白。
我使用一个二维整数数组。我使用嵌套的 for 循环将每个元素写入文件。我查看了该文件并且值是正确的,但我不明白为什么它返回 ASCII 代码。这是我用来写入和读取文件的代码:
写入文件:
for (int i = 0; i < level.MaxRows(); i++)
{
for (int j = 0; j < level.MaxCols(); j++)
{
fileWrite.Write(level.GetValueAtIndex(i, j) + " ");
//Console.WriteLine(level.GetValueAtIndex(i, j));
}
//add new line
fileWrite.WriteLine();
}
这是我从文件中读取值的代码:
string str = "";
int iter = 0; //used to iterate in each column of array
for (int i = 0; i < level.MaxRows(); i++)
{
iter = 0;
//TODO: For some reason, the file is returning ASCII code, convert to int
//keep reading characters until a space is reached.
str = fileRead.ReadLine();
//take the above string and extract the values from it.
//Place each value in the level.
foreach (char id in str)
{
if (id != ' ')
{
//convert id to an int
num = (int)id;
level.ChangeTile(i, iter, num);
iter++;
}
}
这是我用来读取值的最新版本的循环。读取其他值没问题;就在我到达阵列时,事情出了问题。我想我的问题是,为什么要转换为 ASCII?如果我能弄清楚这一点,那么我也许就能解决这个问题。我正在使用 XNA 4 制作我的游戏。
最佳答案
这是转换为 ascii 的地方:
fileWrite.Write(level.GetValueAtIndex(i, j) + " ");
+ 运算符将 GetValueAtIndex 返回的整数隐式转换为字符串,因为您将其添加到字符串(真的,您期望发生什么?)
此外,ReadLine 方法返回一个字符串,所以我不确定为什么您会期望数值神奇地返回此处。如果要写入二进制数据,请查看 BinaryWriter
关于c# - 从文件中读取一个 int 返回 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735372/