2 xiaozhao3972 xiaozhao3972 于 2017.09.04 17:26 提问

java i/o 文件流写入文件问题 20C

大家好,请教一个问题:
现在想把许多整数(0-1024) 按照每个整数占12bit存入到文件中去.该如何去做.以及如何读取出来.
谢谢

4个回答

zy841958835
zy841958835   Ds   Rxr 2017.09.05 13:34

其实这个类似于一个加密解密的过程 可以先把每个整数加密(变成字节然后只取右边12位,注意这里能表示的最大整数是2^11-1)以字符串的形式存入文件
然后取出来左边补全0 变成整数即可

caozhy
caozhy   Ds   Rxr 2017.09.04 17:29

因为内存总线是按照32bit的倍数读取的,所以你表面上省了一点空间,但是这么做非常低效。
非要做也可以,每个整数有两个可能,就是0偏移开头+4字节以及4字节开头+一个字节
通过位移运算可以得到整数。不过效率很低。

caozhy
caozhy   Ds   Rxr 2017.09.04 17:30

就是0偏移开头+4字节以及4字节开头+一个字节
->
就是0偏移开头+4位以及4位开头+一个字节

caozhy
caozhy   Ds   Rxr 2017.09.04 17:45

事实上,编译器使用所谓“对齐”的方式,通过牺牲掉一些内存,来换取性能,所以你的想法完全是反其道而行之的。

Csdn user default icon
上传中...
上传图片
插入图片