如何在 C++ 中将 unsigned char 转换为 unsigned int?

How to convert unsigned char to unsigned int in c++?

我有如下一段代码:

const unsigned char *a = (const unsigned char *) input_items;

input_items基本上就是一个二进制文件的内容。

现在 a[0] = 7,我想将此值转换为 unsigned int。但是当我执行以下操作时:

unsigned int b = (unsigned int) a[0];

并打印这两个值,我得到:

a[0] = 7
b = 55

为什么b也不包含7?我如何得到 b = 7?

我想我现在明白了问题:你将字符 的值打印为一个字符 :

unsigned char a = '7';
std::cout << a << '\n';

这将使用 ASCII 值 55.

打印 字符 '7'

如果要得到数字字符对应的整数值,可以依赖所有数字字符必须连续编码,从零开始到九结束。这意味着您可以从任何数字字符中减去 '0' 以获得其整数值:

unsigned char a = '7';
unsigned int b = a - '0';

现在 b 将等于整数值 7