Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android C++;-将结构转换为字符_Android_C++_Android Ndk - Fatal编程技术网

Android C++;-将结构转换为字符

Android C++;-将结构转换为字符,android,c++,android-ndk,Android,C++,Android Ndk,我需要转换这个结构 typedef struct zidrecord2 { char version; char flags; char filler1; char filler2; unsigned char identifier[IDENTIFIER_LEN]; unsigned char rs1Interval[TIME_LENGTH]; un

我需要转换这个结构

 typedef struct zidrecord2 {
        char version;  
        char flags;     
        char filler1;   
        char filler2;   
        unsigned char identifier[IDENTIFIER_LEN]; 
        unsigned char rs1Interval[TIME_LENGTH];   
        unsigned char rs1Data[RS_LENGTH];         
        unsigned char rs2Interval[TIME_LENGTH]; 
        unsigned char rs2Data[RS_LENGTH];        
        unsigned char mitmKey[RS_LENGTH];      
}
指向
char*
或另一个允许再次回滚到该对象的对象 我试试这个:

zidrecord2_t* amostra =  zidRecord->getRecordData();

const char *recordData = reinterpret_cast<const char*>(zidRecord->getRecordData());
    __android_log_print(ANDROID_LOG_INFO, "MyTag", "The value is %s",recordData);
    amostra = reinterpret_cast<zidrecord2_t*>(recordData);
    __android_log_print(ANDROID_LOG_INFO, "MyTag", "The value is %s",recordData);
zidrecord2\u t*amostra=zidRecord->getRecordData();
const char*recordData=reinterpret_cast(zidRecord->getRecordData());
__android_日志_打印(android_日志_信息,“MyTag”,“值为%s”,recordData);
amostra=重新解释(记录数据);
__android_日志_打印(android_日志_信息,“MyTag”,“值为%s”,recordData);
但我得到了以下错误:

error: reinterpret_cast from type 'const char*' to type 'zidrecord2_t* {aka zidrecord2*}' casts away qualifiers
     amostra = reinterpret_cast<zidrecord2_t*>(recordData);
错误:将类型“const char*”转换为类型“zidrecord2”{aka zidrecord2*}时会丢弃限定符
amostra=重新解释(记录数据);
我怎样才能通过这个问题?或者以另一种方式实现?

amostra=reinterpret\u cast(记录数据);
amostra = reinterpret_cast<const zidrecord2_t*>(recordData);
const
强制转换为
const

如果要强制转换
常量
,请从一开始就使用非
常量
指针

amostra=reinterpret\u cast(记录数据);
const
强制转换为
const


如果要强制转换
常量
,请从一开始就使用非
常量
指针

您可以添加用户定义的转换运算符:

因此,您的代码可能如下所示:

typedef struct zidrecord2 {
    char version;  
    char flags;     
    char filler1;   
    char filler2;   
    unsigned char identifier[IDENTIFIER_LEN]; 
    unsigned char rs1Interval[TIME_LENGTH];   
    unsigned char rs1Data[RS_LENGTH];         
    unsigned char rs2Interval[TIME_LENGTH]; 
    unsigned char rs2Data[RS_LENGTH];        
    unsigned char mitmKey[RS_LENGTH];

    operator char*() const { return ConvertToCharPointerHere();
}

可以添加用户定义的转换运算符:

因此,您的代码可能如下所示:

typedef struct zidrecord2 {
    char version;  
    char flags;     
    char filler1;   
    char filler2;   
    unsigned char identifier[IDENTIFIER_LEN]; 
    unsigned char rs1Interval[TIME_LENGTH];   
    unsigned char rs1Data[RS_LENGTH];         
    unsigned char rs2Interval[TIME_LENGTH]; 
    unsigned char rs2Data[RS_LENGTH];        
    unsigned char mitmKey[RS_LENGTH];

    operator char*() const { return ConvertToCharPointerHere();
}

typedef结构X{}Y是一个C-ism。在C++中,Struts名称没有自己的命名空间,因此更喜欢较少的命名空间污染<代码> Stutty{};代码>类型定义结构X{}Y是一个C-ism。在C++中,Struts名称没有自己的命名空间,因此更喜欢较少的命名空间污染<代码> Stutty{};代码>。