关于ofstream写入二进制文件的有关问题, 为什么int可以short不可以

关于ofstream写入二进制文件的问题, 为什么int可以short不可以
如题, 想把一个整数按二进制形式写入到文件里. 
当我使用一个int类型的数据写入的时候, 是正常的, 代码如下:
#include <iostream>
#include <fstream>
using namespace std;

int main() {
int number = 15;
ofstream datafile;
datafile.open("mydata.dat", ios::binary);
datafile.write((char*)(&number), sizeof(number));
datafile.close();
return 0;
}

使用UltraEdit查看该二进制文件结果:
关于ofstream写入二进制文件的有关问题, 为什么int可以short不可以

但是当我使用short类型的数据进行写入的时候, 就不正常了. 代码只需要将上面代码段中的int改成short即可. 然后使用UltraEdit查看该二进制文件结果是这样的:
关于ofstream写入二进制文件的有关问题, 为什么int可以short不可以

请问为什么会出现这样的情况呢? 我的调试环境是visual studio 2013. 
还有一点, 大家在调试完int类型的结果之后, 要把生成的二进制文件删掉再测试short类型. 否则结果会有点不一样...

拜求大神帮忙解决!!

------解决思路----------------------
按一下ctrl+h
------解决思路----------------------
楼主要勇于尝试啊,你写一个读文件的把数据重新读回来不就知道是不是无效了?!
#include <iostream>
#include <fstream>
using namespace std;

int main() {
short number = 15;
ofstream datafile;
datafile.open("mydata.dat", ios::binary);
datafile.write((char*)(&number), sizeof(number));
datafile.close();

short result = 0;
ifstream is;
is.open("mydata.dat");
is.read((char*)(&result), sizeof(short));
is.close();
cout << result << endl;   //15
return 0;
}

------解决思路----------------------
引用:
按一下ctrl+h


+1
在第二种情况下,ultraedit 打开的时候,按下crlt+h,就按十六进制显示数据了。就能看到了。