如何访问文件的二进制数据?
How access the binary data of a file?
ifstream fp;
fp.open(path, ios::in | ios::binary); //path is the path of the DICOM file I want to read
fstream output;
output.open("C:\Users\Z00\dump.txt", ios::in | ios::out | ios::trunc | ios::binary);
if (fp.is_open())
{
while (getline(fp, rbuffer))
output << rbuffer;
fp.close();
}
我使用上面的代码以二进制模式从 DICOM 文件读取到 txt 文件。
现在,如果我使用记事本或任何其他文档查看器打开文本文件,它显示的内容与打开 DICOM 文件时十六进制编辑器显示的内容完全相同。
现在我想操作文本文档内部的数据。所以我尝试将文本文件的内容打印到控制台中,但它打印完全是胡言乱语。
为什么?
如果我想访问和操作二进制数据,我应该怎么做?
如果您不太了解所使用的文件格式,则无法有意义地处理任何二进制文件的内容。
因此,在您的情况下,您需要研究DICOM规范。 看到这里。
当然,你可能需要使用二进制读取操作,如 std::istream::read、std::istream::get 等。为了明智地使用它们,您需要花费数周时间研究 DICOM 文件格式。
也许DICOM联盟提供了一些免费的软件库来读取这些文件。查看 GDCM(或使用常见的解析技术开发自己的 GDCM(。
另请阅读有关字节序和序列化的信息。
顺便说一句,使用像 getline 这样的面向文本的函数对二进制文件没有多大意义(可以包含空字节和包含 10 的字节,即n
在任何地方使用 UTF-8 或 ASCII-(。
相关文章:
- 如何从dicom文件中读取二进制数据
- 如何在Qt中从数据库中检索二进制数据?
- readsome() 适合在 Windows 上读取二进制数据吗?
- 如何使用 redis-plus-plus 存储二进制数据,就像我想存储结构一样?@for_stack?
- 将包含二进制数据的 QByteArray 传递到按值运行
- 如何在 c++ 中生成十六进制二进制数据的 sha256 哈希?
- 在处理网络、二进制数据和序列化时应使用流或容器
- 我能确定从文件中读取的 32 字节二进制数据等于 256 位吗?
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- 使用二进制数据更新 PostgreSQL 表
- 使用二进制数据和无符号字符
- sd_journal_send发送二进制数据.如何使用日志检索数据?
- 从带有 std::ifstream::read() 的文件中读取 int 遍历 char * 二进制数据
- 将文本和二进制数据连接到一个文件中
- 二进制模式 + 格式化文本操作或文本模式 + 二进制数据操作 - 有意义吗?
- 将整数的二进制数据转换为浮点数
- 使用 CMake 在可执行文件中嵌入二进制数据
- 二进制数据作为命令行参数
- 如何访问文件的二进制数据?
- 返回二进制数据的通用方式,而无需原始指针