如何在C和c++中将字符转换为int ?
当前回答
想必您需要这种转换来使用C标准库中的函数。
在这种情况下,do (c++语法)
typedef unsigned char UChar;
char myCppFunc( char c )
{
return char( someCFunc( UChar( c ) ) );
}
表达式UChar(c)转换为unsigned char以消除负值,除了EOF外,c函数不支持负值。
然后,该表达式的结果被用作int形式参数的实际参数。你会自动提升到int。您也可以显式地编写最后一步,如int(UChar(c)),但我个人认为这太啰嗦了。
干杯!
其他回答
我在C语言中有绝对的零技能,但对于一个简单的解析:
char* something = "123456";
int number = parseInt(something);
...这招对我很管用:
int parseInt(char* chars)
{
int sum = 0;
int len = strlen(chars);
for (int x = 0; x < len; x++)
{
int n = chars[len - (x + 1)] - '0';
sum = sum + powInt(n, x);
}
return sum;
}
int powInt(int x, int y)
{
for (int i = 0; i < y; i++)
{
x *= 10;
}
return x;
}
嗯,在ASCII码中,数字(数字)从48开始。你所需要做的就是:
int x = (int)character - 48;
或者,因为字符'0'的ASCII码是48,你可以这样写:
int x = character - '0'; // The (int) cast is not necessary.
想必您需要这种转换来使用C标准库中的函数。
在这种情况下,do (c++语法)
typedef unsigned char UChar;
char myCppFunc( char c )
{
return char( someCFunc( UChar( c ) ) );
}
表达式UChar(c)转换为unsigned char以消除负值,除了EOF外,c函数不支持负值。
然后,该表达式的结果被用作int形式参数的实际参数。你会自动提升到int。您也可以显式地编写最后一步,如int(UChar(c)),但我个人认为这太啰嗦了。
干杯!
对于char或short to int,只需要赋值。
char ch = 16;
int in = ch;
与int64相同。
long long lo = ch;
所有值都是16。
使用“long long”而不是“int”,这样它适用于更大的数字。这里是优雅的解决方案。
long long ChardToint(char *arr, size_t len){
int toptenf=1;
long long toptenLf=10000000LL;
long long makeintf=3000000000000;
makeintf= 0LL;
int holdNumberf=0;
for(int i=len-1;i>=0 ;i--){
switch(arr[i]){
case '0':
holdNumberf=0;
break;
case '1':
holdNumberf=1;
break;
case '2':
holdNumberf=2;
break;
case '3':
holdNumberf=3;
break;
case '4':
holdNumberf=4;
break;
case '5':
holdNumberf=5;
break;
case '6':
holdNumberf=6;
break;
case '7':
holdNumberf=7;
break;
case '8':
holdNumberf=8;
break;
case '9':
holdNumberf=9;
break;
default:
holdNumberf=0;
}
if(toptenf>=10000000){
makeintf=makeintf+holdNumberf*toptenLf;
toptenLf=toptenLf*10;
}else{
makeintf=makeintf+holdNumberf*toptenf;
toptenf=toptenf*10;
}
}
return makeintf;
}
推荐文章
- decltype(auto)的一些用途是什么?
- Shared_ptr转换为数组:应该使用它吗?
- 使用C返回一个数组
- Printf与std::字符串?
- 禁用复制构造函数
- 只接受特定类型的c++模板
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 为什么pthreads的条件变量函数需要互斥?
- c++ 11中的递归lambda函数
- 如何在构建目标之外生成gcc调试符号?
- 在c++中指针使用NULL或0(零)吗?
- 在c++中,如何将int值附加到字符串中?
- __FILE__宏显示完整路径
- 就性能而言,使用std::memcpy()还是std::copy()更好?
- 为什么布尔值是1字节而不是1位?