2012-03-22 137 views
1

将MPLAB C 中的BYTE(00 - FF)转换为int(0 - 255)值我试过了这个,但它不起作用,因为我想要它:将1 BYTE转换为int值,从00..FF到0..255

atoi(i) 

(i - '0') 
+1

可能重复的[如何将十六进制数字转换为C中的基数10?](http://stackoverflow.com/questions/10324/how-can-i-convert-a-hexadecimal-number -to-base-10-efficient-in-c) – 2012-03-22 20:25:26

+3

您不能将**字节**从十六进制转换为十进制,因为一个字节只是一个数字。它具有广泛的表示形式,并且不受特别的任何表示束缚。你正在寻找一个十进制数字的*字符串表示*吗?请更具体一些。 – dasblinkenlight 2012-03-22 20:29:50

+0

我的意思是转换字节值,我看到它像十六进制,它是什么样的基地10. – 2012-03-22 20:31:25

回答

2

你可以做到这一点

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. 
+0

谢谢你,我会尽力;) – 2012-03-22 20:32:15

+0

i = c & 0xFF;如果你正在谈论一个8位字节。那就是如果我= c;当你不想要它时,符号会延伸。 – 2012-03-22 20:50:37

+0

@dwelch他说他想要的值在0-255之间,所以如果你签字延长,你可能会得到一个否定的结果。我确实假设了一个8位字节,但他也是0 - 0xFF,所以这是8位。 – twain249 2012-03-22 20:52:40