short型强制转为int型:short占两个字节共16位,int占四个字节共32位。转化时只需要把高位用0补全。
#include <stdio.h>
typedef unsigned char* byteP;
int main(){
void showBytes(byteP var,int len);
short c=-10;//1000 0000 0000 1010->补码1111...0110 16位~2个字节
int a=(int)c;
showBytes((byteP)&c,sizeof(c));
showBytes((byteP)&a,sizeof(a));//小端存储
return 0;
}
void showBytes(byteP var,int len)
{
int i;
for(i=0;i<len;i++)
printf("%.2X ",var[i]);
printf("\n");
}
longlong类型强制转为int:longlong占有8个字节共64位,转化成int型也就是把高位的0丢掉。
#include <stdio.h>
typedef unsigned char* byteP;
int main(){
void showBytes(byteP var,int len);
long long c=-32768;//8个字节~64位~16个十六进制数字
int a=(int)c;
showBytes((byteP)&c,sizeof(c)