在 C 中转换为无符号字符

Casting to unsigned char in C

本文关键字:无符号 字符 转换      更新时间:2023-10-16

我面临以下问题:尝试对无符号字符进行转换时,我得到意外的值。我正在使用的代码:

unsigned char MyVal1  = ((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal2 = (unsigned char)((0xF1E3 && 0xff00) >> 8);
unsigned char MyVal3 = (unsigned char)((0xF1E3 && 0xff));

我将所有三个变量存储在一个数组中。

我得到的输出(查看数组中的值;数组是无符号字符数组(:

0x00 
0x00
0x01

当我期待时:

0xF1 
0xF1
0xE3

有人可以好心地帮助我解决我做错了什么吗?

运算符

&&&在整数上的工作方式不同。您的操作数首先转换为 bool(零/非零(,然后一起and

&&

布尔值和运算符;如果其操作数两个都不为零,否则0,则给出1。 您需要按位和运算符 & ,它在其操作数的每个位中给出10