LEADTOOLS DICOM C++ Class Library Help > LEADTOOLS DICOM Features > DICOM Files > An Overview of the DICOM File Format > Overview: Big Endian versus Little Endian Byte Ordering |
Another component of the encoding of a Data Set that shall be agreed upon by communicating Application Entities is the Byte Ordering.
Little Endian byte ordering is defined as follows:
In a binary number consisting of multiple bytes (e.g. a 32-bit unsigned integer value, the Group Number, the Element Number, etc.), the least significant byte shall be encoded first; with the remaining bytes encoded in increasing order of significance.
In a character string consisting of multiple 8-bit single byte codes, the characters will be encoded in the order of occurrence in the string (left to right).
Big Endian byte ordering is defined as follows:
In a binary number consisting of multiple bytes, the most significant byte shall be encoded first; with the remaining bytes encoded in decreasing order of significance.
In a character string consisting of multiple 8-bit single byte codes, the characters will be encoded in the order of occurrence in the string (left to right).
Byte ordering is a component of an agreed upon Transfer Syntax (see Section 10 of the DICOM Standard). The default DICOM Transfer Syntax, which shall be supported by all AEs, uses Little Endian encoding and is specified in Annex A.1 (PS 3.5 of the DICOM Standard). Alternate Transfer Syntaxes, some of which use Big Endian encoding, are also specified in Annex A (PS 3.5 of the DICOM Standard).
Note: The Command Set structure as specified in PS 3.7 of the DICOM Standard is encoded using the Little Endian Implicit VR
Transfer Syntax.
In the default case of Little Endian encoding, Big Endian Machines interpreting Data Sets shall do 'byte swapping' before interpreting or operating on certain Data Elements. The Data Elements affected are all those having VRs that are multiple byte Values and that are not a character string of 8-bit single byte codes. VRs constructed of a string of characters of 8-bit single byte codes are really constructed of a string of individual bytes, and are therefore not affected by byte ordering. The VRs that are not a string of characters and consist of multiple bytes are:
2-byte US, SS, OW and each component of AT
4-byte UL, SL, and FL
8 byte FD
Note: For the above VRs, the multiple bytes are presented in increasing order of significance when in Little Endian format. For example, an 8-byte Data Element with VR of FD, might be written in hexadecimal as 68AF4B2CH, but encoded in Little Endian would be 2C4BAF68H.