gpt4 book ai didi

c - C 中 DICOM UID 的替代表示

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:12 25 4
gpt4 key购买 nike

DICOM 标准定义了具有以下规则的 UID(参见 9.1 UID Encoding Rules)。基本上所有 UID 都匹配以下正则表达式:[0-9.]{64}。所以在 C 语言中,朴素的表示是这样的:

使用类型定义:

typedef char (uid_t)[64];

使用结构:

typedef struct { char repr[64]; } UID 

这需要 64 字节的存储空间,并且需要调用类似 memcmpstrcmp 的方法来比较两个实例。

以上表示最多可以表示 (2^8)^64 ~ 1.3407807929942597e+154 个不同的 UID。

但是,如果仔细观察表示(如果我们省略组件的第一位数字不得为零的规则)。我们看到只有 (10 + 1)^64 ~ 4.4579156845259026e+66 可能的 UID(而且我们有足够的空间)。

由于 (2^8)^32 ~ 1.157920892373162e+77 我现在可以将我最初的天真表示替换为:

使用类型定义:

typedef char (uid_t)[32];

使用结构:

typedef struct { char repr[32]; } UID 

所以我的问题是:

  • 哪个转换能够将我的初始输入 64 字节 UID:[0-9.]{64} 转换为这个 32 字节表示形式?
  • 如果速度快,加分!

最佳答案

根据您对 UID 的描述,它们只是以 11 进制编码。您建议的表示形式是 256 进制。您所要做的就是使用基本转换算法。

关于c - C 中 DICOM UID 的替代表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com