我想了解如何在 C++ 中读取二进制文件。\n我的代码:
\n\nint main() {\n ifstream ifd("input.png",ios::binary |ios::ate);\n int size = ifd.tellg();\n ifd.seekg(0, ios::beg);\n vector<char> buffer;\n buffer.reserve(size);\n ifd.read(buffer.data(), size);\n\n cout << buffer.data();\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我认为如果我计算缓冲区,我会得到二进制结果,但事实并非如此。
\n\nMy output is: \xcb\x99\xc5\x98\xcb\x99\xc3\xa16Exif
如果我读取文本文件,它会以正常形式而不是二进制形式显示文本。显然我的逻辑不正确。\n我如何将文件读取到缓冲区,以便它包含二进制值?\nP.s. 我这样做是为了实现 Shannon-Fano 算法,因此如果有人对读取二进制文件有任何建议,我将不胜感激。
\n我在C#中有两个列表.
public List<MyClass> objectList = new List<MyClass>(); // it is filled with MyClass objects
public List<int> numberList = new List<int>(); // it is filled with numbers
Run Code Online (Sandbox Code Playgroud)
numberList中的数字索引对应于objectList中的对象索引:例如:objectList [0] = o1和numberList [0] = 3; objectList [1] = o2和numberList [1] = 5 ...
objectList: |o1 | o2 | o3 | o4 | o5 | ...
numberList: 3 5 6 1 4 ...
Run Code Online (Sandbox Code Playgroud)
我想按照升序对numberList中的数字进行排序,我希望objectList中的objetcs随之移动:排序后:
objectList: |o4 | o1 | o5 | o2 | o3 | ...
numberList: 1 3 4 5 6 ... …Run Code Online (Sandbox Code Playgroud)