c语言中两种类型之间的转换

c语言中两种类型之间的转换,c,types,C,Types,我有char数据[500]类型的数据我需要将其放入一个函数中,该函数接受无符号字符*数据。我如何在两者之间转换?我是个傻瓜。试试这个: unsigned char* des; des = malloc(500 * sizeof(unsigned char)); strncpy(des, data, 500); 那么您应该能够拨打: func(des); 试一试: unsigned char* des; des = malloc(500 * sizeof(unsigned char)); st

我有
char数据[500]类型的数据
我需要将其放入一个函数中,该函数接受
无符号字符*数据
。我如何在两者之间转换?我是个傻瓜。

试试这个:

unsigned char* des;
des = malloc(500 * sizeof(unsigned char));
strncpy(des, data, 500);
那么您应该能够拨打:

func(des);
试一试:

unsigned char* des;
des = malloc(500 * sizeof(unsigned char));
strncpy(des, data, 500);
那么您应该能够拨打:

func(des);

以下其中一项应该有效

  • 在调用函数之前强制转换数据

    char data[500];
    function((unsigned char*)data);
    
    unsigned char copyOfData[500];
    memcpy(copyOfData, data, 500);
    function(copyOfData);
    
  • 在调用函数之前复制数据

    char data[500];
    function((unsigned char*)data);
    
    unsigned char copyOfData[500];
    memcpy(copyOfData, data, 500);
    function(copyOfData);
    
  • 无符号字符
    数据类型开始

    unsigned char data[500];
    function(data);
    

  • 以下其中一项应该有效

  • 在调用函数之前强制转换数据

    char data[500];
    function((unsigned char*)data);
    
    unsigned char copyOfData[500];
    memcpy(copyOfData, data, 500);
    function(copyOfData);
    
  • 在调用函数之前复制数据

    char data[500];
    function((unsigned char*)data);
    
    unsigned char copyOfData[500];
    memcpy(copyOfData, data, 500);
    function(copyOfData);
    
  • 无符号字符
    数据类型开始

    unsigned char data[500];
    function(data);
    

  • 您只需键入cast to
    unsigned char
    这里有一个例子

    void method(unsigned char *data)
    {
        printf("%c",*(data+5));
    }
    int main()
    {
      char arr[10];
      arr[5] = 's';
      method((unsigned char*)arr);
    }
    

    希望这有帮助。

    您只需键入cast to
    unsigned char
    这里有一个例子

    void method(unsigned char *data)
    {
        printf("%c",*(data+5));
    }
    int main()
    {
      char arr[10];
      arr[5] = 's';
      method((unsigned char*)arr);
    }
    

    希望这有帮助。

    这些转换者都没有,他们都重新解释了数据。@2501,如果
    数据的类型不能更改,则没有其他选项。@2501 OP没有要求转换数据;他询问如何将表达式
    数据
    转换为与
    无符号字符*
    兼容的格式。这就是我对它的理解。@2501当然带有
    无符号字符数据[500];功能(数据)
    数据
    无符号字符
    的数组500转换为指向
    无符号字符
    的指针,成为
    函数()的参数。C11§6.3.2.13@M.MQ应该关闭。这些转换都没有,它们都重新解释了数据。@2501,如果不能更改
    数据的类型,则没有其他选项。@2501 OP没有要求转换数据;他询问如何将表达式
    数据
    转换为与
    无符号字符*
    兼容的格式。这就是我对它的理解。@2501当然带有
    无符号字符数据[500];功能(数据)
    数据
    无符号字符
    的数组500转换为指向
    无符号字符
    的指针,成为
    函数()的参数。C11§6.3.2.13@M.M应关闭Q。如果数据不是以null结尾的字符串(OP未指定-问题未指定),则会损坏数据。如果数据不是以null结尾的字符串,则会损坏数据(OP未指定-问题未指定)