【问题标题】:Trouble finding certain tag values无法找到某些标签值
【发布时间】:2016-06-10 19:02:59
【问题描述】:

我正在尝试使用 pydicom 查找多个标签的值。出于某种原因,只有某些标签有效,而其他标签无效。下面是解释我的问题的回溯。任何人都可以找到解决 int() base 16 问题的方法吗?

>>> ds['0x18','0x21'].value
'SP'
>>> ds['0x18','13x14'].value
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/space/jazz/1/users/gwarner/anaconda/lib/python2.7/site-packages/pydicom-0.9.9-py2.7.egg/dicom/dataset.py", line 276, in __getitem__
tag = Tag(key)
  File "/space/jazz/1/users/gwarner/anaconda/lib/python2.7/site-packages/pydicom-0.9.9-py2.7.egg/dicom/tag.py", line 27, in Tag
arg = (int(arg[0], 16), int(arg[1], 16))
ValueError: invalid literal for int() with base 16: '13x14'

【问题讨论】:

  • 问题是“13x14”不是数字的有效十六进制表示,但是您拥有的所有其他值都是十六进制,所以 13x14 来自哪里
  • 我从未使用过 pydicom,但消息很清楚,它需要一个整数值

标签: python int dicom pydicom


【解决方案1】:

'13x14' 不是以 16 为基数的有效表示形式。

在 python 中,以 16 为基数的数字以 '0x' 作为前缀表示,然后是以 16 为基数的数字。

例如:

0x0, 0x1, 0x001, 0x235, 0xA5F, ...,都是有效的 16 进制数表示。


这个:

ds['0x18','13x14'].value

例如,可能是这样的:

ds['0x18','0x14'].value

它应该可以正常执行。

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多