我一直在记录一些数字,但是已经证实它们是错误的。但是,它们看起来并不是随机的,我对旧数字到底在做什么?。
uint8_t * m_rawValue
// The way I recently learned was wrong
return (uint16_t)*m_rawValue;
// The correct way
uint16_t* a = (uint16_t*)m_rawValue;
return a[0];
答案 0 :(得分:-2)
您之前在做什么:
你在做什么?
a
的值视为指向一堆2字节的指针
整数(uint16_t*
而不是指向一堆1字节的指针
整数(uint8_t*
)所做的假设:
m_rawValue
指向有效uint16_t
值的缓冲区。由于您说更改后可以得到正确的价值,因此这似乎是一个安全的假设。编辑以明确我的假设。