2

这条 Perl 行在 C 中的等价物是什么?

unpack('J>', pack('B*', $s))

根据 Perl 的构建,它采用 4 或 8 字节的二进制表示

"11110000000000000000000001010001"

或者

"0000000000000000000000000000000011110000000000000000000001010001"

并返回由这些字节以大端顺序表示的 32 位或 64 位整数。

0xF0000051
4

1 回答 1

1

要解析您可以使用的二进制字符串strtol()并使其成为大端,您可以使用htonl()

int32_t value = strtol("1010001", NULL, 2);
int32_t big_endian = htonl(value);

htonl()严格来说,它不是 C 的一部分,但它在网络代码中很常见,它将长(4 个字节)放入网络顺序(恰好是大端)。或者,您必须测试您是否已经在一个大端框上,然后您可以自己进行按位运算。

于 2013-02-22T00:08:37.183 回答