求助:Big Endian Little Endian字节排序问题

cg_qiujie 2011-06-20 09:48:58
把DICOM文件中的图像部分提取到BMP文件的函数中
if (nDataEndian == BIG_ENDIAN)
{
if (nBitsAllocated > 8)
SwapWord((char *)pData, nLength/2);
}
不是nDataEndian ==Little Endian时,才进行字节交换吗?
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天鹅梦 2011-06-21
  • 打赏
  • 举报
回复
在win32下,是Little endian时字节交换
cg_qiujie 2011-06-21
  • 打赏
  • 举报
回复
(0002,0010) Transfer Syntax UID: 1.2.840.10008.1.2.1,转换为8为位图。[Quote=引用 3 楼 laviewpbt 的回复:]
DCM图像中有直接判断是否是BigEndian 或LittleEndian 的信息吧。
If InStr(1, S, "1.2.840.10008.1.2.2") > 0 Then
BigEndian = True
End If

Private Function GetShort() As Long
ReadFile FileNumber, Buffer(0), 2, Byt……
[/Quote]
laviewpbt 2011-06-21
  • 打赏
  • 举报
回复
DCM图像中有直接判断是否是BigEndian 或LittleEndian 的信息吧。
If InStr(1, S, "1.2.840.10008.1.2.2") > 0 Then
BigEndian = True
End If

Private Function GetShort() As Long
ReadFile FileNumber, Buffer(0), 2, BytesRead, ByVal 0&
If LittleEndian = True Then
GetShort = Buffer(1) * 256& + Buffer(0)
Else
GetShort = Buffer(0) * 256& + Buffer(1)
End If
End Function
无论是那种字节顺序,你都可以先读入需要的字节,然后在根据顺序计算对应的结果啊,应该是类似上面的代码啊。
chenjiawei007 2011-06-21
  • 打赏
  • 举报
回复
确实哦,网络字节序是固定的BIG_ENDIAN,
而x86的系统都是little endian的,如果是BIG_ENDIAN就没必要交换了。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧