在一个新项目上工作时遇到问题。 我在char数组中得到了很多字节。 我需要将Big Endian中的4个字节转换为int。 当我尝试将4个字节的char数组转换为一个字节又一个字节的int字节时,它们中的一个以负数形式出现。 有解决方案/算法吗?
谢谢!
答案 0 :(得分:1)
网络代码?这就是ntohl
和htonl
的作用。这些函数在本机字节序和大字节序之间转换。
要读取整数:
int value = (int) ntohl(*(int32_t *)(buffer + offset));
要写一个整数:
*((int32_t *)(buffer + offset)) = htonl((int32_t)value);
答案 1 :(得分:-1)
您可以使用atoi来转换数组。
要使用atoi,您需要将数组以“ \ 0”结尾,但是您可以这样做:
您可以在循环中重复上述操作,并选择要使用strncpy参数(n)转换的字节数