【发布时间】:2013-10-12 15:05:34
【问题描述】:
我有可以存储字节(16 的倍数)的智能卡。
如果我这样做:Save(byteArray, length) 那么我可以这样做Receive(byteArray,length)
我想我会按照我存储的顺序得到字节数组。
现在,我有这样的问题。我意识到如果我在这张卡上存储整数,
和其他一些机器(具有不同的字节序)读取它,它可能会得到错误的数据。
所以,我想也许解决方案是我总是在这张卡上存储数据,在一点
endian 方式,并且总是 以 little endian 方式检索数据(我将编写用于读写的应用程序,因此我可以随意解释数字。)。这可能吗?
这是我想出的一些东西:
在 char 数组中嵌入整数:
int x;
unsigned char buffer[250];
buffer[0] = LSB(x);
buffer[1] = LSB(x>>8);
buffer[2] = LSB(x>>16);
buffer[3] = LSB(x>>24);
重要的是我认为 LSB 函数应该返回最低有效字节,而不管机器的字节序如何,这样的 LSB 函数会是什么样子?
现在,重构整数(类似这样):
int x = buffer[0] | (buffer[1]<<8) | (buffer[2]<<16) | (buffer[3]<<24);
正如我所说,我希望它能够正常工作,无论读取和写入它的机器的字节序如何。这行得通吗?
【问题讨论】:
-
dmcr_code - this link 不直接回答 this 问题,但我认为您应该很感兴趣因为它对字节序、位交换和字节顺序进行了广泛的讨论。
-
我会看看,我还发现了一些其他有用的链接,我会看看。
标签: c