nl::Weave::Encoding::BigEndian

此命名空间提供了用于以下用途的函数:

摘要

  • 根据 16 位、32 位和 64 位类型的大端字节序值(相对于主机系统)执行字节重新排序。
  • 安全执行简单、高效的内存映射访问,可能到未对齐的内存位置(无论是否进行字节重新排序)到 8、16、32 和 64 位大端字节序的字节顺序访问(无论是否使用指针管理)。

在大端字节序主机系统中,实际不会发生字节重新排序。在其他系统上,字节重新排序会根据情况进行。

函数

Get16(const uint8_t *p)
uint16_t
从指定的指针地址对采用 16 位排序的大端字节(可能未对齐)执行内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。
Get32(const uint8_t *p)
uint32_t
从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。
Get64(const uint8_t *p)
uint64_t
从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。
HostSwap16(uint16_t v)
uint16_t
这会有条件地执行(对于目标系统而言)按指定 16 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即
HostSwap32(uint32_t v)
uint32_t
这会有条件地执行(对于目标系统而言)按指定 32 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即
HostSwap64(uint64_t v)
uint64_t
这会有条件地执行(对于目标系统而言)按指定 64 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即
Put16(uint8_t *p, uint16_t v)
void
对指定的指针地址执行可能未对齐的目标系统字节顺序 16 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。
Put32(uint8_t *p, uint32_t v)
void
对指定的指针地址执行可能未对齐的目标系统字节排序 32 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。
Put64(uint8_t *p, uint64_t v)
void
对指定的指针地址执行目标系统字节排序的 64 位值(可能未对齐)内存写入,根据需要执行字节重新排序,以便目标系统将值放入大端字节序。
Read16(uint8_t *& p)
uint16_t
从指定的指针地址对采用 16 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 16 位(2 个字节)。
Read16(const uint8_t *& p)
uint16_t
从指定的指针地址对采用 16 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 16 位(2 个字节)。
Read32(uint8_t *& p)
uint32_t
从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 32 位(4 个字节)。
Read32(const uint8_t *& p)
uint32_t
从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 32 位(4 个字节)。
Read64(uint8_t *& p)
uint64_t
从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,视需要对目标系统执行字节重新排序,使值按目标系统字节排序,然后使指针增加 64 位(8 个字节)。
Read64(const uint8_t *& p)
uint64_t
从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,视需要对目标系统执行字节重新排序,使值按目标系统字节排序,然后使指针增加 64 位(8 个字节)。
Write16(uint8_t *& p, uint16_t v)
void
对指定的指针地址执行可能未对齐的目标系统字节顺序 16 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。
Write32(uint8_t *& p, uint32_t v)
void
对指定的指针地址执行可能未对齐的目标系统字节排序 32 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。
Write64(uint8_t *& p, uint64_t v)
void
对指定的指针地址执行目标系统字节排序的 64 位值(可能未对齐)内存写入,根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

函数

Get16

uint16_t Get16(
  const uint8_t *p
)

从指定的指针地址对采用 16 位排序的大端字节(可能未对齐)执行内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于从中读取 16 位大端字节序值。
返回值
如有必要,对指定指针地址中的 16 位值进行重新排序的字节重新排序。

Get32

uint32_t Get32(
  const uint8_t *p
)

从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于从中读取 32 位大端字节序值。
返回值
指定指针地址中的 32 位值(如有必要),会对字节重新排序。

Get64

uint64_t Get64(
  const uint8_t *p
)

从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,并根据需要执行字节重新排序,以便目标系统将值放入目标系统字节排序中。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于从中读取 64 位大端字节序值。
返回值
如有必要,对指定指针地址中的 64 位值进行重新排序的字节重新排序。

HostSwap16

uint16_t HostSwap16(
  uint16_t v
)

这会有条件地执行(对于目标系统而言)按指定 16 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即

主机)字节排序。

因此,在位端字节序目标系统上,这是空操作,而在大端字节序目标系统上,这会执行重新排序。

具体说明
参数
[in] v
要交换字节顺序的 16 位值。
返回值
已交换的输入值(如有必要)。

HostSwap32

uint32_t HostSwap32(
  uint32_t v
)

这会有条件地执行(对于目标系统而言)按指定 32 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即

主机)字节排序。

因此,在位端字节序目标系统上,这是空操作,而在大端字节序目标系统上,这会执行重新排序。

具体说明
参数
[in] v
要交换字节顺序的 32 位值。
返回值
已交换的输入值(如有必要)。

HostSwap64

uint64_t HostSwap64(
  uint64_t v
)

这会有条件地执行(对于目标系统而言)按指定 64 位值的值进行字节顺序交换,并假定采用目标系统的大端字节排序(即

主机)字节排序。

因此,在位端字节序目标系统上,这是空操作,而在大端字节序目标系统上,这会执行重新排序。

具体说明
参数
[in] v
要交换字节顺序的 64 位值。
返回值
已交换的输入值(如有必要)。

Put16

void Put16(
  uint8_t *p,
  uint16_t v
)

对指定的指针地址执行可能未对齐的目标系统字节顺序 16 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于以大端字节序的字节排序方式将目标系统字节顺序为 16 位值写入其中。
[in] v
要写入的 16 位值(如有必要,已交换字节顺序)。

Put32

void Put32(
  uint8_t *p,
  uint32_t v
)

对指定的指针地址执行可能未对齐的目标系统字节排序 32 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于以大端字节序的字节排序方式向目标系统字节顺序为 32 位值写入数据。
[in] v
要写入的 32 位值(如有必要,已交换字节顺序)。

Put64

void Put64(
  uint8_t *p,
  uint64_t v
)

对指定的指针地址执行目标系统字节排序的 64 位值(可能未对齐)内存写入,根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
一个可能未对齐的指针地址,用于以大端字节序的字节排序方式将目标系统字节顺序为 64 位值写入其中。
[in] v
要写入的 64 位值(如有必要,已交换字节顺序)。

Read16

uint16_t Read16(
  uint8_t *& p
)

从指定的指针地址对采用 16 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 16 位(2 个字节)。

具体说明
参数
[in,out] p
对指针地址的引用,可能未对齐,用于从 16 位大端字节序值开始读取 16 位,然后从该位置以 16 位(2 个字节)递增。
返回值
指定指针地址中的 16 位值(如有必要),字节顺序已交换。

Read16

uint16_t Read16(
  const uint8_t *& p
)

从指定的指针地址对采用 16 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 16 位(2 个字节)。

具体说明
参数
[in,out] p
对常量指针地址的引用(可能未对齐),用于从 16 位大端字节序值开始读取 16 位,然后再以 16 位(2 个字节)递增。
返回值
指定指针地址中的 16 位值(如有必要),字节顺序已交换。

Read32

uint32_t Read32(
  uint8_t *& p
)

从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 32 位(4 个字节)。

具体说明
参数
[in,out] p
对指针地址的引用(可能未对齐),用于从 32 位大端字节序值读取 32 位大端字节序,然后以 32 位(4 个字节)递增。
返回值
指定指针地址中的 32 位值(如有必要),字节顺序已交换。

Read32

uint32_t Read32(
  const uint8_t *& p
)

从指定的指针地址对采用 32 位排序的大端字节执行可能未对齐的内存读取,根据需要执行字节重新排序,使目标系统将值放入目标系统字节排序,然后增加指针 32 位(4 个字节)。

具体说明
参数
[in,out] p
对常量指针地址的引用,可能未对齐,用于从 32 位大端字节序值读取 32 位,然后以 32 位(4 个字节)递增。
返回值
指定指针地址中的 32 位值(如有必要),字节顺序已交换。

Read64

uint64_t Read64(
  uint8_t *& p
)

从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,视需要对目标系统执行字节重新排序,使值按目标系统字节排序,然后使指针增加 64 位(8 个字节)。

具体说明
参数
[in,out] p
对指针地址的引用(可能未对齐),用于从 64 位大端字节序值读取 64 位大端字节序,然后以 64 位(8 个字节)递增。
返回值
指定指针地址中的 64 位值(如有必要),字节顺序已交换。

Read64

uint64_t Read64(
  const uint8_t *& p
)

从指定的指针地址对采用 64 位排序的大端字节执行可能未对齐的内存读取,视需要对目标系统执行字节重新排序,使值按目标系统字节排序,然后使指针增加 64 位(8 个字节)。

具体说明
参数
[in,out] p
对常量指针地址的引用(可能未对齐),用于从 64 位大端字节序值开始读取,以 64 位(8 个字节)递增。
返回值
指定指针地址中的 64 位值(如有必要),字节顺序已交换。

Write16

void Write16(
  uint8_t *& p,
  uint16_t v
)

对指定的指针地址执行可能未对齐的目标系统字节顺序 16 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
对指针地址的引用(可能未对齐),以便将 16 位排序的目标系统字节按大端字节排序写入,然后递增 16 位(2 个字节)。
[in] v
要写入的 16 位值(如有必要,已交换字节顺序)。

Write32

void Write32(
  uint8_t *& p,
  uint32_t v
)

对指定的指针地址执行可能未对齐的目标系统字节排序 32 位值的内存写入,并根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
对指针地址的引用(可能未对齐),以便将 32 位排序的目标系统字节以大端字节顺序写入,然后递增 32 位(4 个字节)。
[in] v
要写入的 32 位值(如有必要,已交换字节顺序)。

Write64

void Write64(
  uint8_t *& p,
  uint64_t v
)

对指定的指针地址执行目标系统字节排序的 64 位值(可能未对齐)内存写入,根据需要执行字节重新排序,以便目标系统将值放入大端字节序。

具体说明
参数
[in] p
对指针地址的引用(可能未对齐),以便将按大端字节序排列的目标系统字节写入 64 位值,然后以 64 位(8 个字节)递增。
[in] v
要写入的 64 位值(如有必要,已交换字节顺序)。