gpt4 book ai didi

在c中转换数据类型

转载 作者:行者123 更新时间:2023-12-04 09:42:26 27 4
gpt4 key购买 nike

首先我要说的是,我公开承认这是为了家庭作业,但我要问的与作业的目的无关,只是一些我在 C 中不理解的东西.这只是大型程序的一小部分。

所以我的问题是,我有一组包含各种数据类型的数据,如下所示:

[16位数][16位数][16位数][char[234]][128位数]

其中每个 block 表示来自程序其他地方的变量。我需要一次将该数据 8bytes 发送到接受 uint32_t[2] 作为输入的函数中。如何在不丢失 char 值的情况下将我的 234byte char 数组 转换为 uint32_t

换句话说,稍后我需要能够从 uint32_t 版本转换回原始 char 数组。我知道 char1byte,该值也可以表示为与其 ascii 值相关的数字,但不确定如何在两者之间转换,因为有些字母有一个 3 位的 ascii 值,其他的有 2 个。

我尝试使用 sprintf 从数据集中获取 8byte block ,并将该值存储在 uint32_t[2] 变量中。它有效,但后来我丢失了原始 char array 因为我无法找到返回/撤消它的方法。

我知道必须有一个相对简单的方法来做到这一点,我只是缺乏足够的 C 技能来实现它。

最佳答案

您的问题非常令人困惑,但我猜您正在准备一些数据结构以通过需要 8 个字节或 2 个 uint32_t 的函数进行加密。

您可以按如下方式将 char 数组转换为 uint32_t

#define NELEM 234
char a[NELEM];
uint64_t b[(NELEM+sizeof(uint64_t)-1)/sizeof(uint64_t)]; // this rounds up to nearest modulo 4

memcpy(b,a,NELEM);

for(i .. ) {

encryption_thing(b[i]);

}

or

如果您需要更改字节序或其他内容,那就更复杂了。

关于在c中转换数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017585/

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