0

我使用这个例程进行从文件到内存的二进制读取,直到现在都运行良好......至少在 iOS 上,在模拟器中(......没有付费的开发人员程序(还;)))

数字,例如 fileSize,bytesRead 是可以的,但它在最后给出了乱码......

我不能覆盖内存,因为我立即进行输出......

然后我认为这可能是对齐边界问题,例如 fileSize % 4 = det。胡言乱语。但这将是一种奇怪的行为,函数获取大小和计数,lib 应该计算在后台读取的多字节,所以这不应该导致问题......

这是我使用的代码:

uint8_t *readFileToMemory(FILE *fp)
{
    fseek(fp, 0, SEEK_END);
    long fileSize = ftell(fp);
    rewind(fp);
    //
    printf("fileSize %lu bytes\n",fileSize);
    //
    uint8_t *fileData = NULL;
    //
    fileData = (uint8_t *)requestMemory(fileData, (MEM_TYPE_MEMSIZE)fileSize, BF_MEM_ZERO_NO, "readFileToMemory()");
    fread(fileData, 1, (size_t)fileSize, fp);
    //
    long sizeRead = fread(fileData, 1, (size_t)fileSize, fp);
    printf("sizeRead %lu bytes\n",sizeRead);
    //
    fclose(fp);
    //
    printf("+\n+\nfileData:\n%s+\n+\n",fileData);
    //
    return fileData;
}

我发布这个问题的原因是“为什么胡言乱语?” 在 iOS-sim 上,我确实有一个简单的解决方法...

尼尔斯

4

1 回答 1

0

我现在在这里,所以我不妨提供一个关闭的答案;)

在将二进制文件作为(c/glsl NULL-terminated)字符串传递之前,我忘记在二进制文件的末尾添加一个 '\0'...哎呀 :)

我感谢 borrrden 对 Apple libs binary-read 的评论,我仍然需要研究......(时间时间)

尼尔斯

于 2012-08-22T12:59:52.730 回答