2016-06-10 83 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 

它應該執行罰款。