想知道为什么有DICOM格式,YAML格式,XML格式,JSON格式吗?

1 因为是为了代码和数据的可移植性

我们都知道,现在的操作系统有很大概两种,Win派,UNIX派(Mac,Linux和Arm),如果您在不同的机器之间交换二进制文件,二进制数据会被当作垃圾读取(例如,由于字节序和字大小的不同)。如果只在写入二进制数据的同一台机器上读取二进制数据,则没有问题。

另一个值得关注的问题,尤其是当数据量巨大和/或代价高昂时,是代码库演进的鲁棒性问题。例如,如果您读取的是二进制结构,而您必须将其中一个字段的类型从 int(或 int32_t)改为 long(或 int64_t),那么您的二进制数据文件将毫无用处(除非您编写了特定的转换例程)。如果二进制文件的制作成本很高(例如,需要一个实验设备或昂贵的计算来创建它),你就会遇到麻烦。

2 格式化数据

这就是为什么要使用结构化文本格式(虽然不是灵丹妙药,但很有用)或数据库管理系统的原因。结构化文本格式包括 XML(相当复杂)、Json(非常简单)和 Yaml(复杂性和功能介于 XML 和 Json 之间)。而且文本格式更容易调试(可以用编辑器查看)。有几个免费库可以处理这些数据格式。比如DCMTK可以处理DICOM格式的数据,OpenCV可以处理Yaml格式的数据,Java可以处理Json格式的数据。XML格式比较特别,比如在CBCT重建中需要使用,可以使用RTK(ITK的子集)来处理。

相关推荐
LeslieChan_专业海外留学服务8 分钟前
美本申请怎么填写课外活动?这些细节值得注意
c++·uni-app·c#·oneapi·cmmi·墨刀
ღ᭄ꦿ࿐Never say never꧂8 分钟前
Redis 五大基本数据类型及其应用场景进阶(缓存预热、雪崩 、穿透 、击穿)
java·数据库·redis·缓存预热、雪崩、击穿、穿透·五大基本数据类型
程序员阿鹏35 分钟前
HashMap为什么线程不安全?如何实现线程安全
java·开发语言·数据结构·安全·eclipse·intellij-idea
Death20043 分钟前
序列化与反序列化
c语言·c++·qt·c#
m0_675447081 小时前
Java ERP管理系统源码解析:微服务架构实践Spring Cloud Alibaba与Spring Boot
java·erp管理系统源码
猫武士水星1 小时前
分糖果C++
开发语言·c++
jndingxin1 小时前
OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
人工智能·opencv·音视频
景小雨1 小时前
【数据结构与算法】Z算法(扩展KMP)(C++和Python写法)
c++·python·算法
my烂笔头1 小时前
2024版Clion debug无法查看函数内数组内容 解决办法
c语言·c++·clion
计算机学姐1 小时前
基于SpringBoot+Vue的留学信息推荐系统
java·vue.js·spring boot·后端·mysql·spring·mybatis