gpt4 book ai didi

arrays - 如何将 const unsigned char 数组中的元素转换为 char

转载 作者:行者123 更新时间:2023-12-05 06:59:59 24 4
gpt4 key购买 nike

我正在尝试迭代单个 const unsigned char 数组并使用类型转换将每个元素分配/转换为新的 char 数组,我读过的每个线程都建议使用类型转换但它对我不起作用,这是我的尝试:

#include <stdio.h>
#include <stdlib.h>

char *create_phone_number(const unsigned char nums[10]) {
char *new = malloc(11);
int i = 0;
for (; i<10; i++)
new[i] = (char)nums[i];
new[i] = '\0';
return new;
}

int main(void) {
char *num = create_phone_number((const unsigned char[]){ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
printf("%s\n", num);
free(num);
return 0;

}

以上代码的标准输出:

预期的标准输出:

1111111111

如何将 nums 中的元素转换为类型 char 并将转换后的值分配/存储在 new 数组中(高效)?

最佳答案

转换为 char 并不意味着将整数值转换为相应的 ASCII 字符;数值 1 是 ASCII 代码 SOH(标题开始),它没有可打印的表示形式,因此您的输出为空。如果您知道所有值都在 0 到 9 范围内,您可以将它们添加到 ASCII '0' 以获取生成关联 ASCII 数字的 char 值:

char *create_phone_number(const unsigned char nums[10]) {
char *new = malloc(11);
for (int i=0; i<10; i++)
new[i] = '0' + nums[i];
new[i] = '\0';
return new;
}

你实际上根本不需要施放它; + 的结果将是 int 并且它将存储回一个可以毫无问题地适合它的 char (所以只要确保它们'实际上所有的都是 0-9 值,否则你会得到奇怪的结果)。

关于arrays - 如何将 const unsigned char 数组中的元素转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235292/

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