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{};代码>。