簡體   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