我正在为 Big Endian 32 位微 Controller 编写 C 语言,我需要在 ROM 中存储字符数组:
const uint8 font_6x8[570] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <space>
0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, // '!'
0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // '"'
... }
const uint8 font_6x6var[665] = {
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <space>
0x02, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, // '!'
0x04, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, // '"'
... }
等等,用于在图形 LCD 上使用多种位图字体。 我的问题是编译器将这些字节存储在 Big Endian 4 字节集中,这会混淆每个字符,因为它们不是由 N*4 字节组成。
它们应该是const
并在ROM中设置,所以我不能真正在代码中反转它们。
有没有办法告诉编译器这些字节需要按 Little Endian 顺序插入。我认为使用 8 位类型会强制执行此操作,但事实并非如此。
最佳答案
如果您使用的是 gcc
,请尝试分别使用标志 -mbig-endian
或 -mlittle-endian
来调用它。
关于const char array[] = {set} 以大端存储,我需要小端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21487086/