- uint32_t BlockAddress;
- uint16_t TotalBlocks;
-
- /* Load in the 32-bit block address (SCSI uses big-endian, so have to do it byte-by-byte) */
- ((uint8_t*)&BlockAddress)[3] = CommandBlock.SCSICommandData[2];
- ((uint8_t*)&BlockAddress)[2] = CommandBlock.SCSICommandData[3];
- ((uint8_t*)&BlockAddress)[1] = CommandBlock.SCSICommandData[4];
- ((uint8_t*)&BlockAddress)[0] = CommandBlock.SCSICommandData[5];
-
- /* Load in the 16-bit total blocks (SCSI uses big-endian, so have to do it byte-by-byte) */
- ((uint8_t*)&TotalBlocks)[1] = CommandBlock.SCSICommandData[7];
- ((uint8_t*)&TotalBlocks)[0] = CommandBlock.SCSICommandData[8];
-
+ uint32_t BlockAddress = SwapEndian_32(*(uint32_t*)&CommandBlock.SCSICommandData[2]);
+ uint16_t TotalBlocks = SwapEndian_16(*(uint16_t*)&CommandBlock.SCSICommandData[7]);
+