繁体   English   中英

C ++-将结构转换为char

[英]C++ - Convert struct to char

我需要转换此结构

 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);

但是我收到以下错误:

error: reinterpret_cast from type 'const char*' to type 'zidrecord2_t* {aka zidrecord2*}' casts away qualifiers
     amostra = reinterpret_cast<zidrecord2_t*>(recordData);

我该如何解决这个问题? 或以其他方式实施?

amostra = reinterpret_cast<const zidrecord2_t*>(recordData);

constconst

如果要抛弃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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM