c - 有没有办法获取短路数据的最后一个字节并将其保存到字符中

标签 c

我正在按照教程为 Chip8 编写模拟器。 操作码长 2 个字节,采用十六进制格式。它们以无符号短数据类型(2 个字节)存储。

我想获取其中一条短裤的最后一个字节并将其保存在一个字符(1 个字节)上。

我尝试使用 & 操作过滤掉第一个字节,然后分配给 char 变量。

unsigned short opcode = 0x56FA; //sample opcode
char mychar = opcode & 0x00FF;  //& operation to make 1st byte zeros
printf("%02X \n", mychar);      //should print last byte FA

我希望它能打印 FA。 而是打印出 FFFFFFFA。

最佳答案

当您编写 printf("%02X\n", mychar); 时,mychar 将提升为整数,然后打印该整数。在您的情况下,mychar是有符号的并且实际上是负数,因此该值被提升为负整数,并且您将获得输出FFFFFFFA。如果您使用 unsigned char 那么您将得到预期的输出。

您的问题似乎与this question重复。和 this answer比我的好。

关于c - 有没有办法获取短路数据的最后一个字节并将其保存到字符中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032329/

相关文章:

计算一个数组的平均值,返回值是废话

c++ - Linux上使用C的Char数组和指针进行段错误

c - 反转字符串

c - c 程序中的双重释放或损坏 (!prev) 错误

c - 免费 malloc 指针位置问题

c - 指针算法得到错误的输出

c - 为什么 valgrind 将我的内存报告为 "definitely lost"?

c - 关于多线程和段错误的问题

c++ - 指针如何允许硬件访问?

您可以使用十六进制在 char** 中声明数据吗?