C 将字符数组中的字符转换为整数
我的问题是:如何获取整数变量来识别存储在字符数组中的字符的值 我的问题是:我无法获取整数变量号来存储字符数组array1[]中元素表示的正确值 一些背景: 我已经编写了一个名为Celcius_to_fahrenheit的函数,它进行了一个简单的转换。它接受一个字符数组,其中包含3个存储为字符的数字,并将数组中的每个元素分配给一个名为number的整数变量。变量号可能与某个对象相乘后,将添加到浮点变量Celsium中。一旦获得摄氏度,进行简单的转换以产生华氏度,并返回华氏度C 将字符数组中的字符转换为整数,c,C,我的问题是:如何获取整数变量来识别存储在字符数组中的字符的值 我的问题是:我无法获取整数变量号来存储字符数组array1[]中元素表示的正确值 一些背景: 我已经编写了一个名为Celcius_to_fahrenheit的函数,它进行了一个简单的转换。它接受一个字符数组,其中包含3个存储为字符的数字,并将数组中的每个元素分配给一个名为number的整数变量。变量号可能与某个对象相乘后,将添加到浮点变量Celsium中。一旦获得摄氏度,进行简单的转换以产生华氏度,并返回华氏度 // Converts
// Converts Celcius to Fahrenheit for Tmax and Tmin`
float Celsius_to_fahrenheit(char array1[])
{
float fahrenheit, Celsius;
int i, number;
Celsius = fahrenheit = number = 0;
for(i = 0; i < strlen(array1); i++)
{
if (i == 0)
{
number = (int)array1[i];
Celsius += (float)number * 10;
}
if (i == 1)
{
number = (int)array1[i];
Celsius += number;
}
if (i == 2)
{
number = (int)array1[i];
Celsius += (float)number * 0.10;
}
}
printf("%.1f\n", Celsius);
fahrenheit = Celsius * (9.0/5.0) + 32.0;
return fahrenheit;
}
//将Celcius转换为Tmax和Tmin的华氏温度`
浮动摄氏度至华氏度(字符阵列1[]
{
浮动华氏温度,摄氏度;
int i,数字;
摄氏度=华氏度=数值=0;
对于(i=0;i
十进制数字的char
表示形式与数字本身不同。例如,'4'
并不等于4
,而是52
。您可以通过从数组元素中减去'0'
来更正此问题,以获得实际值,例如number=(int)(array1[i]-'0')
十进制数字的char
表示形式与数字本身不同。例如,'4'
并不等于4
,而是52
。您可以通过从数组元素中减去'0'
来纠正这一点,以获得实际值,例如number=(int)(array1[i]-'0')
Achar
值只是(.128
范围内的有符号数字。整数识别字符数组中存储的字符的值不需要进行任何转换
int i = array[n];
将为i
提供存储在array
的n
元素中的字符值。您可以在中看到值转换。注意:为了向自己证明不需要或不需要转换,请将该值视为字符和整数:
int a = 48;
printf ("the integer value: %d, the character: %c\n", a, a);
a
的值在内存中永远不会改变,这只是你用它代表什么的问题。一个非常简单的例子是:
#include <stdio.h>
int main () {
char array[] = "this is my array.";
int i = array[3];
printf ("\n the integer value of i: %d, the character i represents: %c\n\n", i, i);
return 0;
}
char
值只是(-128
范围内的有符号数。整数识别字符数组中存储的字符的值不需要进行任何转换
int i = array[n];
将为i
提供存储在array
的n
元素中的字符值。您可以在中看到值转换。注意:为了向自己证明不需要或不需要转换,请将该值视为字符和整数:
int a = 48;
printf ("the integer value: %d, the character: %c\n", a, a);
a
的值在内存中永远不会改变,这只是你用它代表什么的问题。一个非常简单的例子是:
#include <stdio.h>
int main () {
char array[] = "this is my array.";
int i = array[3];
printf ("\n the integer value of i: %d, the character i represents: %c\n\n", i, i);
return 0;
}
如果查看ASCII表,可以看到字符的等效整数值。例如,如果您想知道字符“0”的整数值,它将是48。将char转换为int的一个简单实现是取char和-48。(或减去“0”,因为字符“0”等于48) 如果查看ASCII表,可以看到字符的等效整数值。例如,如果您想知道字符“0”的整数值,它将是48。将char转换为int的一个简单实现是取char和-48。(或减去“0”,因为字符“0”等于48) 您已经得到了几个解释如何从字符中获取数字的答案。我将为循环提供一个更简单的版本来累加数字 使用:
您已经得到了几个解释如何从字符中获取数字的答案。我将为循环提供一个更简单的版本来累加数字 使用:
有意义,因为“4”存储为十进制52,“0”存储为十进制48。因此,减去“4”-“0”应产生一个4的十进制数。谢谢你的帮助@Liftalots精确-设置ASCII字符,使数字0到9的表示形式相邻并按升序排列。它们还可以方便地对齐,以便最低的4位也表示数字本身,因此您还可以写入
number=(int)(array1[i]&0x0F)
。这是有意义的,因为“4”存储为十进制52,“0”存储为十进制48。因此,减去“4”-“0”应产生一个4的十进制数。谢谢你的帮助@Liftalots精确-设置ASCII字符,使数字0到9的表示形式相邻并按升序排列。它们还可以方便地对齐,以便最低的4位也表示数字本身,因此您还可以写入number=(int)(array1[i]&0x0F)
。