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

标签 c char ipv6 uint8t

我可以进行函数调用并接收表示 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/

相关文章:

c++ - GetGlyphOutline 函数如何工作? (WinAPI)

c++ - 使用 char 确定输出不起作用

将一定数量的字符从一个指针复制到另一个指针

c++ - 使用 char c++ 重载运算符

java - ServletRequest.getRemoteAddr 什么时候返回 IPv6

c - 如何将 SQLite 数据库中的数据显示到 GTK TreeView 中?

C:将嵌套结构数组传递给函数

c - C 是否允许编译时检查半可变矩阵大小?

c++ - 如何显示当前的IPv6连接?

c - 如何通过 RAW 套接字发送修改后的 IPv6 数据包?