gpt4 book ai didi

将字符串转换为整数并从 c 中的整数值返回相同的字符串

转载 作者:行者123 更新时间:2023-11-30 20:18:41 26 4
gpt4 key购买 nike

我想将字符串“hello world”转换为某个整数值,并从转换后的整数值返回“hello world”字符串。我尝试过,但在将 int 转换为字符串时遇到问题。

我使用以下代码将字符串转换为整数:

char str[50]; 
int i, len; int result=0;
printf("Enter string to be converted: ");
gets(str);
len = strlen(str);
for(i=0; i<len; i++){
result = result * 10 + ( str[i] - '0' );
}
printf("%d\n", result);

然后我尝试将其转换回来,如下所示:

printf("%d\n", result); 
int rem; int j = 0;
char result_str[50];
while (result !=0) {
result = result - '0' ;
rem = result%10 ;
result = result/10;
result_str[j] = 'a' + (rem -1);
printf("%c",result_str[j]); j++;
}
printf("result string = %s",result_str);

示例输出:

$ ./a.out 
Enter string to be converted: hello
619663
619663
eccfhresult string = eccfh

当我尝试字符串“hello world”时,出现段错误。

最佳答案

绝对没有办法将字符串转换为 int,然后再按照您想要的方式转换回来。

int 通常为 4 个字节,而您使用的 char[50] 为 50 个字节。这意味着 int 可以有 2³2 个不同的值,而 char[50] 可以有 2⁴⁰⁰ 不同的值。因此根本不可能将它们一对一映射。

让我们举一个代码和计算机领域之外的例子,只关注数字。您能想象一种将两位数与一位数相互转换的方法吗?如果这是可能的,那么我们一开始就不需要两位数字。如果存在这样的方法,您将能够在单个位中存储无限量的数据。

您可以将 char[4]int 相互转换。其实很简单。此代码将打印 abcd

char str[4] = { 'a', 'b', 'c', 'd'};
// Convert to int
int result = *(int*) str;

char newstr[4];

// Convert back
char * ptr = (char*) &result;
for(int i=0; i<4; i++)
newstr[i] = ptr[i];

printf("%.4s\n", newstr);

请注意,我完全忽略了字符串的终止,只是指示 printf 在四个字符后停止。

哦,永远不要使用 gets 函数。很危险。

关于将字符串转换为整数并从 c 中的整数值返回相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53274913/

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