- for (int i = 0; i < 16; i++) {
-
- /*
- * decimal in stream is lo32, mi32, hi32, ss32
- * but its internal structure si ss32, hi32, lo32, mi32
- */
- if (i < 4)
- buffer [i + 12] = value_ptr [i];
- else if (i < 8)
- buffer [i + 4] = value_ptr [i];
- else if (i < 12)
- buffer [i - 8] = value_ptr [i];
- else
- buffer [i - 8] = value_ptr [i];
+
+ /*
+ * decimal in stream is lo32, mi32, hi32, ss32
+ * but its internal structure si ss32, hi32, lo32, mi32
+ */
+
+ if (BitConverter.IsLittleEndian) {
+ for (int i = 0; i < 16; i++) {
+ if (i < 4)
+ buffer [i + 12] = value_ptr [i];
+ else if (i < 8)
+ buffer [i + 4] = value_ptr [i];
+ else if (i < 12)
+ buffer [i - 8] = value_ptr [i];
+ else
+ buffer [i - 8] = value_ptr [i];
+ }
+ } else {
+ for (int i = 0; i < 16; i++) {
+ if (i < 4)
+ buffer [15 - i] = value_ptr [i];
+ else if (i < 8)
+ buffer [15 - i] = value_ptr [i];
+ else if (i < 12)
+ buffer [11 - i] = value_ptr [i];
+ else
+ buffer [19 - i] = value_ptr [i];
+ }