gpt4 book ai didi

c++ - 如何将 char 数组解析为整数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:58 27 4
gpt4 key购买 nike

我有一个像这样的 char 数组的缓冲区:

char buf[4];
buf[0] = 0x82;
buf[1] = 0x7e;
buf[2] = 0x01;
buf[3] = 0x00;

我现在想将 char 2 和 3 一起读取为 big endian 中的 16 位无符号整数。如何使用 C(++) 标准工具执行此操作?

目前我只会知道手动解决方案:

int length = but[3];
length += but[2] << 8;

这对于 16 位整数来说很容易,但我还需要解析 32 位整数,这会使事情变得有点困难。那么标准库中是否有一个函数可以为我做这件事?

博多

最佳答案

您可以使用 ntohsntohl(在小端系统上):

#include <iostream>
#include <cstring>
#include <arpa/inet.h>
int main(){
char buf[4];
buf[0] = 0x82;
buf[1] = 0x7e;
buf[2] = 0x01;
buf[3] = 0x00;
uint16_t raw16;
uint32_t raw32;
memcpy(&raw16, buf + 2, 2);
memcpy(&raw32, buf , 4);
uint16_t len16 = ntohs(raw16);
uint32_t len32 = ntohl(raw32);
std::cout << len16 << std::endl;
std::cout << len32 << std::endl;
return 0;
}

或者您可以交换字节并将其转换为适当的类型而不是移动。

关于c++ - 如何将 char 数组解析为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15989332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com