c++读取文件的二进制,如何能和nodejs的fs读出来一样

我用c++读取二进制文件,读取了一个图片,然后对读出的二进制进行处理,处理后在写入二进制文件中,然后用nodejs的fs进行读取相同图片二进制文件的时候发现,nodejs的fs和c++读取的相同二进制文件的结果不一样,问:如何能让nodejs读取的文件二进制和c++读取的文件二进制一样?

具体需求:
我需要用c++读取图片为二进制,然后对二进制的每一位进行异或操作达到加密效果,然后把加密后的文件拿到nodejs中,用nodejs的fs打开图片文件为二进制,对二进制每一位进行异或操作达到解密效果。现在c++文件异或加密已实现,要用nodejs实现异或解密。

C++已实现的文件异或加密,需要用nodejs实现一个一模一样的,但现在发现nodejs读取的二进制和c++不一样....,这是c++已实现并测试通过的代码


//加密单个文件
void MainLogic::Encryption(char *in_fname, char *out_fname, char *pwd)
{
    FILE *in_file, *out_file;
    register char ch;
    int x;
    x = strlen(pwd);
    in_file = fopen(in_fname, "rb");//以读的方式打开二进制文件
    if (in_file == NULL)//如果打开失败
    {
        cout << "Open file error";
        return;
    }
    out_file = fopen(out_fname, "wb");//以写的方式打开二进制文件
    if (out_file == NULL)//如果创建失败
    {
        cout << "Create file error";
        return;
    }

    char sz[1024 * 10]; // 每次读写这么多
    int nTotalLen = 0;
    while (1)
    {
        int nLen = fread(sz, 1, 1024 * 10, in_file);
        if (nLen <= 0)
            break;
        //cout << nLen << endl;
        char sout[1024 * 10];
        int nIndex = 0;
        for (int i = 0; i < nLen; i++)
        {
            sout[i] = sz[i] ^ pwd[nIndex >= x ? nIndex = 0 : nIndex++];
        }
        fwrite(sout, 1, nLen, out_file);
    }

    fclose(in_file);
    fclose(out_file);
}

你描述的问题是结果不一样,代码只放一个,那怎么对比,你把两个代码都放上来

其实,不同语言的实现有些许不同,但不会相差太远!
你说出你的具体需求,然后我们才能一起出解决方案!

首先图片文件需要用二进制模式打开,不能用文本模式打开。
其次图片文件都一定的文件格式,你读取处理图片文件是否是按文件格式要求来处理的。
最后你这个问题太含糊其辞,没有提供代码,没有具体说明哪里不一样,所以不能提供具体的解决方法。