从文本文件获取 ASCII tilemaps?

getting ASCII tilemaps from a text file?

我正在尝试为 Nitemare 3D 编写地图 reader,每个地图块为 2 个字节(1 个用于图块,1 个用于图块上的项目)每个地图为 64*64 块,地图文件本身包含几张地图,我已经加载了地图并将其转储到文本文件中,但它出现了损坏

编辑:寻求答案的人,我在输出时忘记添加std::ios::binary lol

代码:

std::ifstream is;

is.open("MAP.1", std::ios::binary);

char* mapbuff = new char[8192];
is.seekg(514);
is.read(mapbuff, 8192);

std::ofstream myfile("map1.txt");
if (myfile.is_open())
{
    for (int i = 0; i < 64 * 64*2; i++) {
        myfile << mapbuff[i];
    }
    
    myfile.close();
}

mapfile

它应该是什么样子:

转储后的样子:

您正在使用 Windows 并且您没有以二进制模式写入文件。每次你写一个换行符 - \n - 0x0A - 它都会转换为 CR + 换行符 - \r\n - 0x0D 然后是 0x0A。这会添加一个额外的字节,使文件不匹配。

要解决此问题,请在输出流中也使用 std::ios::binary