我正在为Big Endian 32位微控制器编写C,我需要在ROM中存储char数组:
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位类型会强制执行此操作,但事实并非如此。
答案 0 :(得分:0)
如果您使用gcc
,请尝试分别使用标记-mbig-endian
或-mlittle-endian
进行调用。
答案 1 :(得分:0)
好的,首先我将BE和LE定义混淆了但是没关系 事情是当我预期BE时,IDE在LE中显示值,所以最后,我的值不会混淆,它应该可以正常工作。