Char数组到Int转换

问题描述 投票:0回答:2

从事新项目并遇到问题。我在char数组中得到了一大块字节。 Big Endian中有4个字节需要转换为int。当我尝试将4个字节的char数组转换为字节后的int字节时,它们会以负数形式出现。任何解决方案/算法?

谢谢!

c memory endianness
2个回答
1
投票

网络代码?这就是ntohlhtonl的用途。这些函数在native endian和big endian之间进行转换。

要读取整数:

 int value = (int) ntohl(*(int32_t *)(buffer + offset));

要写一个整数:

 *((int32_t *)(buffer + offset)) = htonl((int32_t)value);

-1
投票

您可以使用atoi转换您的阵列。

atoi man

要使用atoi,您需要以“\ 0”结尾,但您可以这样做:

  • strncpy将n个字节复制到临时缓冲区。
  • 在tmp缓冲区的末尾添加“\ 0”。
  • 在这个临时缓冲区上使用atoi。

您可以在循环内重复上述操作,并选择要使用strncpy参数转换的字节数(n)

strncpy man

© www.soinside.com 2019 - 2024. All rights reserved.