如何在C中返回无符号char数组?

时间:2019-04-24 11:01:13

标签: c char return unsigned

我写了一个简短的函数将十六进制值转换为二进制。

我为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

0 个答案:

没有答案