代表字节序的符号或约定?

时间:2011-02-17 23:30:00

标签: endianness

是否有符号或其他约定来表示技术写作中值/变量/你有什么的字节顺序?

也就是说,如果我想描述一个算法或公式,并将该公式表示为数学表达式(例如X = P + 2 / Y),是否有一种方法可以指示其中一个变量的字节序? / p>

例如:

  

以下公式显示了如何计算新指针值npnt

     

使用存储在INT变量pnt中的旧指针值时,请记住它存储为little-endian,而newoffset是大端。要使用pnt的值执行数学运算,您必须将pnt更改为big-endian。

     

INT pnt = 0x1722

     

INT new = 0x900F

     

INT offset = 0xF600

     

npnt = offset + new - pnt

这只是一个随机的例子。我关注的主要问题是公式本身 - 如果没有上面的段落解释,公式中的每个变量的字节顺序都没有显示。

我提出的解决方案是将箭头符号上标为变量,如下所示:

  

npnt = offset + new - pnt

或者,更好的是,将箭头直接放在变量名称的上方(我不能使用有限的SO语言)。

那是否有约定?或者这是从来没有做过的事情,因为我首先描述/表示错误的东西?

1 个答案:

答案 0 :(得分:1)

对于我所使用的跨平台代码库,我使用了将_be附加到big-endian字节顺序的变量和_le的小端字节顺序的约定。假设其他任何东西都是主机字节顺序。

为使用命名的网络协议创建的结构,因此很清楚您正在处理的字节顺序。我们必须处理大端和小端值,并且坚持这个约定有很大帮助。

如果你保持一致,那么在你的代码中犯错是很困难的。将foo_be分配给bar会导致错误,bar = be16toh( foo_be)只是看起来正确。

如果您使用的是格式化文本,则可以对任何非主机字节顺序的值或变量使用子脚本bele