1

我正在使用带有 Content-Type 的 WADO-RS:application/dicom。成功执行请求后,我得到一个字节流,其中包含一些标头信息和 Multipart 格式的 DICOM 数据。如何使用 C++ 代码从中解析实际的 DICOM 数据?

4

1 回答 1

2

多部分文件的每个部分都是一个 dicom 实例。每个部分都包含一个内容长度字段,我从内容字段中解码长度。dicom 文件在内容长度字段结束后的 4 个字节处开始。长度将告诉您 dicom 文件的结束位置。下面是一个python片段:

for dicm in re.finditer(b'Content-Length:', mime_bytes_msg):

    content_length_index = dicm.end() + 1
    content_length = ''

    dicom_file = open('%s/%s_%d.dcm' % (output_path, dicom_prefix, instance_number), 'wb')
    instance_number += 1
    while mime_bytes_msg[content_length_index:content_length_index + 1].decode('utf-8').isdigit():
        content_length += mime_bytes_msg[content_length_index:content_length_index + 1].decode('utf-8')
        content_length_index += 1

    dicom_start_index = content_length_index + 4
    dicom_file.write(mime_bytes_msg[dicom_start_index:dicom_start_index + int(content_length)])

    dicom_file.close()
于 2018-08-05T17:45:32.203 回答