C++: De byte a signed int

Si casteamos un byte, o sea un unsigned char, a int, obtendremos un valor entre 0 y 255, ya que int, pese a ser signed, contiene ese rango de valores.

Si nuestra intención es ver ese byte como un entero entre -128 y 127, lo que debemos hacer es primero castear a signed char. Y recién después de hacer eso, castear a int.

unsigned char b = 248;
int i = static_cast<int>(b); //248
int j = static_cast<int>( static_cast<char>(b) ); //-8

Prefiero usar static_cast antes que la forma tradicional (y equivalente) de castear, porque facilita encontrar los casteos cuando uno sospecha que generan problemas (es más fácil encontrar "static_cast<int>" que "(int)" ).

Comments

Popular posts from this blog

VB.NET: Raise base class events from a derived class

Apache Kafka - I - High level architecture and concepts

Upgrading Lodash from 3.x to 4.x