c - 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 []
,格式类似于上面的代码片段?
解决方案
这可能很简单:
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
. 它们基本上是同一个意思。
推荐阅读
- java - 如何将数据添加到 th:action 表单
- google-chrome - 提取xpath中的属性值
- amazon-web-services - S3在负载下放置未触发lambda的事件
- sql - 如何用 MAX 小计
- php - Docker 连接到本地主机
- android - 什么时候在 Kotlin 中传递函数类型是有益的?
- c# - 如果请求模型不正确,则 OnActionExecuting 不执行
- javascript - UnhandledPromiseRejectionWarning:SyntaxError:JSON 输入意外结束
- javascript - Angular 材质 mat-menu 重新加载页面
- python - 计算不包括开始日期的工作日,并使用 busday_count 包括结束日期