将大端字节数组转换为类整型结构.在python中解包



最近我试图将python串行数据分析器转换为c++,但我面临的问题是如何将feff转换为c++中的整数-2,这是我的python代码的一部分。

def Control_Message(input_):
print(input_[4:8])
print(bytes.fromhex(input_[4:8]))
print(struct.unpack('h', bytes.fromhex(input_[4:8])))
print(struct.unpack('h', bytes.fromhex(input_[4:8]))[0])
Angular_Rate_X = struct.unpack('h', bytes.fromhex(input_[0:4]))[0] * 600 * 2 ** -20

,结果是:

feff
b'xfexff'
(-2,)
-2

,现在我很困惑,我怎么能做同样的事情在c++,希望您的帮助,谢谢!

#include <cstdint>
#include <iostream>
int main() {
uint16_t value = 0xfeff;
uint8_t firstByte = static_cast<uint8_t>((value & 0xFF00) >> 8);
uint8_t secondByte = static_cast<uint8_t>(value & 0x00FF);
std::cout << std::hex << static_cast<int>(firstByte) << "n";
std::cout << std::hex << static_cast<int>(secondByte) << "n";
}

输出:

fe
ff

如果您的目标是分别获得fe和ff,然后将它们视为整数,请按照以下步骤操作。

#include <cstdint>
#include <iostream>
int main() {
uint16_t value = 0xfeff;
uint8_t firstByte = static_cast<uint8_t>((value & 0xFF00) >> 8);
uint8_t secondByte = static_cast<uint8_t>(value & 0x00FF);
std::cout  << static_cast<int>(firstByte) << "n";
std::cout  << static_cast<int>(secondByte) << "n";
}

输出:

254
255

如果您的目标是查找feff的整数值,则执行以下操作

#include <cstdint>
#include <iostream>
int main() {
uint16_t value = 0xfeff;
std::cout  << static_cast<int>(value) << "n";
}

输出:

65279

最新更新