我有一个我无法解决的问题.假设我有这个地图定义:
map<string, int16_t> Registers;
Run Code Online (Sandbox Code Playgroud)
但有时,我需要存储一个unsigned int16_t而不是一个signed int16_t.我怎样才能做到这一点?
谢谢.
您可以使用更大的鱼的类型,比如int32_t,或使用boost::variant.
一个int32_t可以存储一个int16_t或一个uint16_t可以的所有值,并且它保留例如32768和-32768之间的差异(假设两个补码).如果您使用了某些转换方案,int16_t并且uint16_t它们之间的差异将丢失,因为两者都将存储为0x8000.分开像0x8000这样的值将需要带外信息,如果你有,你没有提到.
但是,int32_t不会保留32767 signed和32767 unsigned之间的区别.如果重要,那么boost::variant可以保留该信息.