首页 > 解决方案 > C 将 char* 转换为 uint8_t []

问题描述

我正在开发一个接收加密字符串的程序。为此,我使用的是tiny-AES-c库。

我收到的加密字符串是char*. 为了将字符串与函数一起使用,AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length)我需要将字符串转换为uint8_t [].

这就是tiny-AES-c库喜欢这种格式的方式,如他们的test.c所示:

uint8_t in[]  = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a };

我被告知这可以使用strtoul来实现。我已经对此功能进行了很多研究,但似乎找不到与我遇到的问题相关的任何问题/文档/示例。

我的问题是,如何将 a 的内容转换为char*数组uint8_t [],格式类似于上面的代码片段?

标签: ctype-conversion

解决方案


这可能很简单:

char* buf = "test";
size_t length = 5;

AES_CBC_decrypt_buffer(ctx, (uint8_t*) buf,  (uint32_t) length)

uint8_t并且char对于二进制数据在很大程度上是相同的,与 2^32 以下的值相同size_t并且uint32_t兼容。

使用整数类型的 C99 代码将uint8_t使用char. 它们基本上是同一个意思。


推荐阅读