我将一个写好的string的字符串,通过Encoding.ASCII.GetBytes(str)转换为二进制存入到数据库,
数据库的响应字段写着<二进制字符串>疑问一:我打开那个字段却显示0x3C3F78。这是十六进制的吧?
然后我从数据库中读出来
byte[] xmlbyte = pattable.PolicyContent;
string sb = Encoding.Unicode.GetString(xmlbyte);疑问二:sb不返回原来的字符串,却返回一个System.Byte[]这几个字。求解,帮我把原来的字符串还原出来
数据库的响应字段写着<二进制字符串>疑问一:我打开那个字段却显示0x3C3F78。这是十六进制的吧?
然后我从数据库中读出来
byte[] xmlbyte = pattable.PolicyContent;
string sb = Encoding.Unicode.GetString(xmlbyte);疑问二:sb不返回原来的字符串,却返回一个System.Byte[]这几个字。求解,帮我把原来的字符串还原出来
代码是这样的
Sql.Add("@PolicyContent",SqlDbType.Image,M.PolicyContent);
ALTER Procedure [dbo].[PatchPolicyTable_Insert]
@id nvarchar(50),
@PolicyName nvarchar(50),
@EffectDate datetime,
@PolicyType tinyint,
@Description nvarchar(200),
@PolicyContent image
AS
Insert Into [dbo].[PatchPolicyTable]
(
[id],
[PolicyName],
[EffectDate],
[PolicyType],
[Description],
[PolicyContent]
)
Values
(
@id,
@PolicyName,
@EffectDate,
@PolicyType,
@Description,
@PolicyContent
)
private string strTextTostrBin(string strText)
{
byte[] bytearr=null; string stringtobin="";
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
bytearr=encoding.GetBytes(strText); for(int i=0;i<bytearr.Length;i++)
{
stringtobin+=","+bytearr[i].ToString();
}
return stringtobin.Substring(1);
} private string strBinTostrText(string strBin)
{
string [] bintostr=strBin.Split(',');
Array binArray=Array.CreateInstance(Type.GetType("System.Byte"),bintostr.Length);
for(int i=binArray.GetLowerBound(0);i<=binArray.GetUpperBound(0);i++)
{
binArray.SetValue(byte.Parse(bintostr[i]+""),i);
}
byte[] strtobin=new byte[bintostr.Length];
for(int i=binArray.GetLowerBound(0);i<=binArray.GetUpperBound(0);i++)
{
strtobin[i]=(byte)binArray.GetValue(i);
}
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(strtobin);
}
不知道楼主什么意思