尝试将字符串/字符转换为整数会产生意外结果
Trying to convert a string/char to an integer yielded an unexpected result
我遇到了一些奇怪的事情。这可能是微不足道的,但我找不到答案。谁能向我解释为什么在这个动作中我得到 49 的结果?
using namespace std;
int main() {
int number;
string binary = "10101011";
number = int(binary[0]);
cout << number; // result is 49 , why is that?
}
binary[0]
是'1'
,它的ASCII值是49。
因为当您尝试将char
类型的元素转换为int
类型的binary[0]
- 它会转换字符的 ASCII 代码,该代码只是一个数字,正如@QuentinUK提到的那样。
如果你想存储位并将它们转换为数字,你应该看看std::bitset。
如果你想从std::string
中获取任何元素作为数字,你应该查看std::atoi。
您已定义字符串二进制 = "10101011"; 二进制[0]是字符"1"。将字符解析为 int 时,输出是该字符的 ASCII 值。
所以实际上在你的代码中,你不是在 int 中打印那个字符,而是打印 ASCII 值'1'
即 49。
每当将字符转换为 int 时,它都会更改并分配该字符的 ASCII 值。
要解决您的问题,您可以使用FOLOW:
#define conv_digit(ch) (ch-'0')
然后只需调用这个函数传递binary[0]
或任何你想要的字符。
相关文章:
- 序列化,没有库的整数,得到奇怪的结果
- 尝试将字符串/字符转换为整数会产生意外结果
- 取消引用指向整数的指针时获得不同的结果
- AVX2 整数乘以有符号 8 位元素,产生有符号 16 位结果?
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- 将较大的整数写为二进制并读回它们会产生不好的结果
- C++,概念不适用于无符号整数作为结果类型?
- 比较整数提升后的结果
- 如何将 xt::sum 表达式结果转换为整数
- 涡轮增压C++结果无法与长整数
- 为什么不同的整数声明会改变结果?
- 我可以将比较结果用作C++的整数吗?
- 为什么使用 int64_t 会产生错误的结果,而双精度则按预期进行简单的整数乘法
- std::reduce 似乎将结果转换为整数
- 从文本文件中读取并使用 sizeof 结果计算整数的数量到 nan
- 整数变量与整数字面变化的乘法结果
- 打印整数指针元素时的结果不同
- 整数异或C++的可能结果
- 如何使用字符串和整数获取汽车类的整数结果
- 在所有声明的双精度但整数结果中打印带有函数的圆的面积,为什么