大家好,请教一个问题:
现在想把许多整数(0-1024) 按照每个整数占12bit存入到文件中去.该如何去做.以及如何读取出来.
谢谢
因为内存总线是按照32bit的倍数读取的,所以你表面上省了一点空间,但是这么做非常低效。
非要做也可以,每个整数有两个可能,就是0偏移开头+4字节以及4字节开头+一个字节
通过位移运算可以得到整数。不过效率很低。
就是0偏移开头+4字节以及4字节开头+一个字节
->
就是0偏移开头+4位以及4位开头+一个字节
事实上,编译器使用所谓“对齐”的方式,通过牺牲掉一些内存,来换取性能,所以你的想法完全是反其道而行之的。
其实这个类似于一个加密解密的过程 可以先把每个整数加密(变成字节然后只取右边12位,注意这里能表示的最大整数是2^11-1)以字符串的形式存入文件
然后取出来左边补全0 变成整数即可