2016-06-10 45 views
-1

我试图找到使用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' 
+0

问题是'13x14'不是数字的有效十六进制表示,但是您拥有的每个其他值都是十六进制,因此13x14从哪里来的? – PyNEwbie

+0

我从来没有使用pydicom,但消息明确表示它期望整数值 – PyNEwbie

回答

0

'13x14'不是基数16的有效表示。

在Python中,基座16号与加 '0x' 为前缀,然后在基座16

数表示。例如:

为0x0,为0x1,0×001,0x235,0xA5F,... ,都是基于16位数字的有效表示。


此:

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

可能是,例如,这样的:

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

它应该执行罚款。