将int转换为char。没有存储正确的值

时间:2014-09-20 12:46:31

标签: c++ casting char int

我正在尝试将一个数字存储为名为code

的char矢量中的字符
code->at(i) = static_cast<char>(distribution(generator));

然而,它并没有以我认为的方式存储

Value stored

有些人不应该'\ x4'是4的ascii值吗?如果不是我如何实现这一结果?

这是另一个正确输入值的向量。 enter image description here

2 个答案:

答案 0 :(得分:3)

您正在投射而不实际将int转换为char。你需要:

code->at(i) = distribution(generator) + '0';

答案 1 :(得分:3)

没有。 \xN没有为您提供字符N的ASCII代码。

\xN ASCII字符,其代码为N(以 x 十进制形式)。

因此,当您编写'\x4'时,您将获得带有ASCII码4的[unprintable]字符。转换为整数后,此值仍为4.

如果您希望ASCII字符看起来像4,则您需要写'\x34',因为34是4的ASCII码。你也可以使用一些魔术来实现,基于ASCII中的数字是连续的并且从'0'开始:

code->at(i) = '0' + distribution(generator);

Ish。