+// Calculate 4bit integer into 4byte integer
+constexpr std::uint32_t Calculate4BitTo4Byte(const std::uint8_t& input)
+{
+ std::uint32_t output = 0;
+#if DALI_BYTE_ORDER_BIG_ENDIAN
+ output |= static_cast<std::uint32_t>(input & 0x08) << 21;
+ output |= static_cast<std::uint32_t>(input & 0x04) << 14;
+ output |= static_cast<std::uint32_t>(input & 0x02) << 7;
+ output |= static_cast<std::uint32_t>(input & 0x01);
+#else
+ output |= static_cast<std::uint32_t>(input & 0x08) >> 3;
+ output |= static_cast<std::uint32_t>(input & 0x04) << 6;
+ output |= static_cast<std::uint32_t>(input & 0x02) << 15;
+ output |= static_cast<std::uint32_t>(input & 0x01) << 24;
+#endif
+ return output * 0xff;
+}
+
+/**
+ * @brief Calculation result bit-->byte table in compile.
+ * Required memory = 16 * 4byte = 64byte
+ */
+// clang-format off
+constexpr std::uint32_t cachedCalculation4BitTo4ByteTable[16] = {
+ Calculate4BitTo4Byte(0x00), Calculate4BitTo4Byte(0x01), Calculate4BitTo4Byte(0x02), Calculate4BitTo4Byte(0x03),
+ Calculate4BitTo4Byte(0x04), Calculate4BitTo4Byte(0x05), Calculate4BitTo4Byte(0x06), Calculate4BitTo4Byte(0x07),
+ Calculate4BitTo4Byte(0x08), Calculate4BitTo4Byte(0x09), Calculate4BitTo4Byte(0x0a), Calculate4BitTo4Byte(0x0b),
+ Calculate4BitTo4Byte(0x0c), Calculate4BitTo4Byte(0x0d), Calculate4BitTo4Byte(0x0e), Calculate4BitTo4Byte(0x0f)};
+// clang-format on