相当于对C的perl语句

时间:2013-02-21 23:45:57

标签: c binary byte endianness

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

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

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

"11110000000000000000000001010001"

"0000000000000000000000000000000011110000000000000000000001010001"

并返回由big-endian顺序的那些字节表示的32位或64位整数。

0xF0000051

1 个答案:

答案 0 :(得分:1)

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

int32_t value = strtol("1010001", NULL, 2);
int32_t big_endian = htonl(value);
严格来说,

htonl()不是C的一部分,但它通常用于网络代码,并且它将长(4个字节)放入网络顺序(恰好是大端)。或者,你必须测试你是否已经在大端盒子上,然后你可以自己做按位操作。