gpt4 book ai didi

c++ - 从 char 数组获取 int32_t 或 int64_t 值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:23 25 4
gpt4 key购买 nike

我需要执行的操作要求我从 char 数组中获取一个 int32_t 值和 2 个 int64_t 值

char 数组的前 4 个字节包含 int32 值,接下来的 8 个字节包含第一个 int64_t 值,接下来的 8 个字节包含第二个。我不知道如何获得这些值。我试过了;

int32_t firstValue = (int32_t)charArray[0];
int64_t firstValue = (int64_t)charArray[1];
int64_t firstValue = (int64_t)charArray[3];

int32_t *firstArray = reinterpet_cast<int32_t*>(charArray);
int32_t num = firstArray[0];
int64_t *secondArray = reinterpet_cast<int64_t*>(charArray);
int64_t secondNum = secondArray[0];

我只是在抓救命稻草。任何帮助表示赞赏

最佳答案

快速而肮脏的解决方案:

int32_t value1 = *(int32_t*)(charArray +  0);
int64_t value2 = *(int64_t*)(charArray + 4);
int64_t value3 = *(int64_t*)(charArray + 12);

请注意,这可能会导致未对齐的内存访问。所以它可能并不总是有效。


不违反严格别名且不会出现对齐问题的更健壮的解决方案:

int32_t value1;
int64_t value2;
int64_t value3;

memcpy(&value1,charArray + 0,sizeof(int32_t));
memcpy(&value2,charArray + 4,sizeof(int64_t));
memcpy(&value3,charArray + 12,sizeof(int64_t));

关于c++ - 从 char 数组获取 int32_t 或 int64_t 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681471/

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