如何将char的值转换为int
How can I get value of char to convert to int?
我想将二进制计数转换为十进制计数。我的代码片段:
int main(){
string count;
char number;
int counter;
int score = 0;
cout << "Wpisz liczbę w systemie binarnym" << endl;
cin >> count;
count << endl;
counter = count.length();
for (int i = 0; i < counter; i++)
{
number = count[i];
int aaa = (int) number - '0' // is that correct ? I think not.
score = aaa * pow(2,i) + score;
}
count <<wynik;
return 0;
}
但是我的程序给出非常奇怪的分数,例如:
输入:100(十进制8)输出:1
输入1000(十进制16)输出:1
我不知道为什么。你能帮我吗?我认为这就是char的问题所在?我说的是真的吗?
谢谢,
Sorry for my english
试一试:
int main(){
string liczba;
int licznik;
int wynik = 0;
cout << "Wpisz liczb w systemie binarnym" << endl;
cin >> liczba;
licznik = liczba.length();
for (int i = 0; i < licznik; i++)
{
int aaa = liczba[i] -'0'; // A bit hacky way to convert char to int
wynik += aaa * pow(2.0,licznik - i - 1); // Minus 1 to get the correct power
}
cout << wynik;
return 0;
}
不知道你从哪里得到的count
从你的代码,但我认为你实际上是指cout
。
有关字符转换的更多信息,请参阅此问题。
另外,正如其他人指出的那样,当从索引为0的字符串中读取字符时,您将取出的二进制数字,其重要性降低。这意味着你的指数应该是递减的,而不是递增的。
编辑:我也注意到在你的问题中你读二进制错误:
输入:100(十进制8)输出:1
输入1000(十进制16)输出:1
100是4,不是8。同样,1000是8,而不是16。也许你忘记了2^0
,或者1的数字?
另一种方法是取消强制转换为from double类型的pow。
int main(){
string liczba;
int licznik;
int wynik = 0;
cout << "Wpisz liczb w systemie binarnym" << endl;
cin >> liczba;
licznik = liczba.length();
for (int i = 0; i < licznik; i++)
{
int aaa = liczba[i] -'0'; // A bit hacky way to convert char to int
wynik *= 2; // shift existing total up a power of 2 (could use << 1)
wynik += aaa; // Add the next digit
}
cout << wynik;
return 0;
}
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 将 int 数组转换为 std::vector<int*>
- 如何转换 int 变量并附加到常量 wchar_t*
- 类型转换<int>的舍入问题
- 在Objective-C中调用sqlite3数据库时,如何调用和转换int/NSNumber
- 转换 int -> 无符号长 长 是否由标准定义
- 简单的 int 到字符串转换..int to const char* 无效
- 如何将转换 int 除法键入为浮点数
- C++类型转换 int * 到类
- 预期的类型说明符,并且无法在初始化时转换“int*”
- 转换int并将其与char*连接
- 字符串流在转换int型时添加新行
- 转换int为字符串/char c++ /Arduino
- c# P-Invoke:如何转换INT fun(BYTE *bStream, UINT16 *nCount, const
- 类型转换(int**)和int(*)的区别
- 从"int"到"nodeType"的无效转换<int>
- 从无符号int构造对强制转换int的引用