我写了一个简短的函数将十六进制值转换为二进制。
我为I²C交易返回了一个带有二进制的无符号字符数组。
我的方法的end变量包含正确的值,但是到达的返回值不相同。
我的问题在哪里?
这是用于微控制器和I²C通信的。
unsigned char* hextobinary(int hexvalue){
unsigned char binaryvalue[8];
unsigned char temp_binaryvalue[8];
if (hexvalue > 511){
for(int i = 0; i < 8; i++){
binaryvalue[i] = '0';
}
return binaryvalue;
}
for(int i = 0; i < 8; i++){
if(hexvalue == 0){
temp_binaryvalue[i] = 0;
}else{
temp_binaryvalue[i] = hexvalue%2;
hexvalue = hexvalue/2;
}
}
for(int i = 0; i < 8; i++){
binaryvalue[i] = temp_binaryvalue[7-i];
printf("return-methode %d: %d\n",i,binaryvalue[i]);
}
return binaryvalue;
}
int main(void){
Setup();
unsigned char *ret_array;
ret_array = hextobinary(0xaa);
for(int i = 0; i < 8; i++){
printf("return: %u\n", ret_array[i]);
}
return 0;
}
我的方法的返回值为: 1,0,1,0,1,0,1,0
,到达的值为: 1,255,2,32,197,50,0,8