我正在按照教程为 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/