我的存储量为[[n个字节(在我的情况下是Qt中的QByteArray
,但我认为这个问题更笼统)。
到目前为止,没有出现任何问题。我通过这样构造的位字段通过can总线交换数据。不,我正在实现以任意长度(以位为单位)存储值(只要它们适合)。
对于小端值,这很容易,因为我可以简单地修剪前导零,当涉及负数时也可以修剪前导零。
但是,当我考虑如何针对大字节序值执行正确的方法时,我有点困惑如何正确打包值。
例如,假设我有位存储0bXXXXXXXXXXXXXXXX
,并且我想将值0x0123
存储在位偏移4
处,占据9位:
在小尾数法中,我只需将结果0b100100011
写到我的存储中:0bXXX100100011XXXX
在大字节序中,我最终得到的值为0x2301
。是打包我修剪第一个非零字节(从右到右)中的零以适合9位的值的正确方法吗?
因此,这将导致0x47
的值最终具有0bXXX001000111XXXX
的存储布局。
这是正确的方法吗?
提前感谢。