gpt4 book ai didi

将 char* 转换为 uint8_t 数组 (c)

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:36 27 4
gpt4 key购买 nike

我可以进行函数调用并接收表示 ipv6 地址的字符串数组。看起来像这样

char* buffer=resolver_getstring(config, INI_BOOT_MESHINTFIPADDRESS);

如果我打印缓冲区,我将以字符串形式门控 ipv6 地址:

dddd:0000:0000:0000:0000:0000:0000:cccc

但是,在我的项目中 ipv6 地址的表示方式是使用 uint8_t 数据类型使用 16 个十六进制数,如下所示

uint8_t ipadress[16]

现在我的问题是如何将(或复制缓冲区的内存)转换为 uint8_t[16]

我想得到的是

    ipadress[0]=dd // hexadecimal number
ipaddress[1]=dd
....
ipaddress[15]=cc

有什么我可以做的吗?问候,

最佳答案

#include <stdint.h>
#include <inttypes.h>
...
char *buffer="dddd:0000:0000:0000:0000:0000:0000:cccc";
uint8_t ipadress[16];
sscanf(buffer,
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ":"
"%2" SCNx8 "%2" SCNx8 ,
&ipadress[0],&ipadress[1],
&ipadress[2],&ipadress[3],
&ipadress[4],&ipadress[5],
&ipadress[6],&ipadress[7],
&ipadress[8],&ipadress[9],
&ipadress[10],&ipadress[11],
&ipadress[12],&ipadress[13],
&ipadress[14],&ipadress[15]);

关于将 char* 转换为 uint8_t 数组 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114241/

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