Embedded 将1字节转换为int值,从00..FF转换为0..255

Embedded 将1字节转换为int值,从00..FF转换为0..255,embedded,int,byte,Embedded,Int,Byte,在MPLAB C中将字节(00-FF)转换为int(0-255)值 我尝试过这个方法,但没有达到我想要的效果: atoi(i) 及 你可以这样做 unsigned char c = 0xF3; //there is no byte in C but unsigned char is basically equivalent int i = c & 0xFFFF; //this will set i to the value of c; 输出将是 i = 243; //the dec

在MPLAB C中将字节(00-FF)转换为int(0-255)值 我尝试过这个方法,但没有达到我想要的效果:

 atoi(i)

你可以这样做

unsigned char c = 0xF3; //there is no byte in C but unsigned char is basically equivalent
int i = c & 0xFFFF; //this will set i to the value of c;
输出将是

i = 243; //the decimal version of 0xF3.

您无法将字节从十六进制转换为十进制,因为字节只是一个数字。它具有广泛的表示形式,并且与任何表示形式无关。您是否正在寻找字节的字符串表示形式作为十进制数?请更具体一点。我的意思是转换字节值,我看到它像十六进制和10进制。你是指字节的ASCII表示吗?(顺便说一下,字节不是标准类型。)或者您只是想将字节转换为
int
?如果是这种情况,您可以简单地将字节分配给int(十六进制表示法0x0-0xFF表示与十进制表示法0-255相同的值)。是的,我只想将bytr转换为inti=c&0xFF;如果你说的是一个8位字节。也就是说,如果i=c;当你不希望符号扩展时,符号扩展。@dwelch他说他希望值在0-255之间,所以如果你对扩展进行符号扩展,你可能会得到一个负数,这是行不通的。我确实假设了一个8位字节,但他也表示为0-0xFF,所以这是8位。正确的c&0xFFFF在你的答案中是16位,而不是8位。如果它的符号扩展,它将使其0x0000到0xFFFF,而不是0x00到0xFF。这就是我所说的符号扩展,但可能最好是有掩码,不管怎样,编译器会删除它,如果有正确的指令来避免它。
i = 243; //the decimal version of 0xF3.