日期:2014-05-19  浏览次数:20813 次

[探讨]有关字符串格式存储的问题[乱顶勿入]
1、字符串(非文件)保存到数据库,用备注字段和图形字段(二进制)方式,哪一种体积更小?

个人觉得应该一样,呵呵,不过有些拿不准。

2、字符串如何转成二进制流并转换回来??不是文件阿,网络上提供的转换都是在文件流和二进制流之间转换

======================================================================
本贴说明:
1、技术交流贴,非散分。分只给交流的人,结贴率100%;
2、欢迎一切问题有关的交流——无论答案对错;
3、不欢迎   顶、Mark、支持之类口水混分的人;
4、因为你的行为,影响了我删除零回复的权力;
所以,我保留我对蹭分者的厌恶,你也有权力对我鄙视。

<希望只知道蹭分的垃圾们去死,还技术区的清静>
======================================================================

------解决方案--------------------
当然是图形字段(二进制)方式小了

string buf= "..3246fdgwer543gfr245g ";
char[] chars= buf.ToCharArray();
byte[] bufs=new byte[chars.length];
for(int i=0;i <bufs.length;i++) {

bufs[i]=System.Convert.ToByte(chars[i]);
}
反过来
就是先将字节转化成char类型
然后使用new string(char[] chars)方法得到字符串;

------解决方案--------------------
我感觉体积应该差别不大,除非字段类型用Unicode

//1个字符转换成对应的一个byte
未必,Unicode字段一个字符占两字节啊

------解决方案--------------------
如果是字符串包含中文,用Unicode比UTF8或gb2312大比如 "11一 ",
System.Text.Encoding.Unicode.GetBytesCount( "11一 ");//结果为6
System.Text.Encoding.UTF8.GetBytesCount( "11一 ");//结果为5
System.Text.Encoding.GetEncoding( "GB2312 ").GetBytesCount( "11一 ");//长度为4