c# - 从文件中读取一个 int 返回 ASCII

标签 c# arrays xna ascii

我目前正在制作游戏,但我似乎无法从文本文件中读取值。出于某种原因,当我读取该值时,它会给我该值的 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/

相关文章:

c# - 我的 Action 被调用了两次

C# Language : generics, open/closed, bound/unbound, constructed

c++ - 我在合并排序中传递这个数组的方式有什么问题?

silverlight - Windows Phone 7 入门

c# - 我如何控制 XNA 在启动时定位游戏窗口的位置?

c# - 如何在 EasyNetQ 中为每个消费者声明自定义错误交换?

c# - WPF.NET : OpenSubkey() don't find value in registry

wpf 数据绑定(bind)和 x :Arrays

objective-c - 创建一个填充有 HTML 代码的数组

c# - XNA Waterphysicals 自上而下的基于六角形的网格