Foxtable(狐表)用户栏目专家坐堂 → 请教,如何字符串转换成字节?


  共有11901人关注过本帖树形打印复制链接

主题:请教,如何字符串转换成字节?

帅哥哟,离线,有人找我吗?
baoxyang
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
请教,如何字符串转换成字节?  发帖心情 Post By:2011/5/30 16:45:00 [只看该作者]

SQL图片列是image类型,存放照片二进制内容“0xFFD8FFE000104A46494600010100000100010000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F171816141812141514FFDB00430103040405040509050509140D0B0D14141414141414141414141414141414141414”
发现这个查询是很慢的。我把照片存放二进制为text类型时,查询是很快的。但是如何把text转换成byte类型的。

 

          Dim imageByte() As Byte = Tables("卸船货损管理_Table1").Current("照片")   ‘原来照片列是image类型的,现改成了text类型了

          Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
          Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
          e.Form.Controls("Picturebox1").Image = image 

 

请问以上代码应如何实现呢?谢谢指教。



 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 17:03:00 [只看该作者]

Dim bt1 As Byte() =  {&H0, &H12, &H34, &H56, &HAA, &H55, &HFF}
Dim s As String = Convert.ToBase64String (bt1)
Dim bt2 As Byte() = Convert.FromBase64String(s)
For i As Integer = 0 To bt1.length -1
    If bt1(i) <> bt2(i) Then
        Return "false"
    End If
Next
Return "true"

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2011/5/30 17:04:00 [只看该作者]

请教下,是否把图片以二进制存储在表中image类型列中,在查询此表数据时反映是否很慢?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 17:04:00 [只看该作者]

看2楼。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/30 17:16:00 [只看该作者]

晕,神马啊?

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2011/5/30 17:22:00 [只看该作者]

以下是引用狐狸爸爸在2011-5-30 17:03:00的发言:
Dim bt1 As Byte() =  {&H0, &H12, &H34, &H56, &HAA, &H55, &HFF}
Dim s As String = Convert.ToBase64String (bt1)
Dim bt2 As Byte() = Convert.FromBase64String(s)
For i As Integer = 0 To bt1.length -1
    If bt1(i) <> bt2(i) Then
        Return "false"
    End If
Next
Return "true"

 不太明白。

 但这样不行。

         dim s as stirng = Tables("卸船货损管理_Table1").Current("照片")    '是text类型的二进制。

          Dim imageByte() As Byte = Convert.FromBase64String(s)

          Dim ms As New IO.MemoryStream(imageByte)       '将字节数组转换为二进制流
          Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
          e.Form.Controls("Picturebox1").Image = image 

提示字符组无效长度。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 17:29:00 [只看该作者]

图片太大,字符数组太长?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/30 17:50:00 [只看该作者]

我这个通过测试的:

 

Dim fs As New IO.FileStream("c:\001.gif" , IO.FileMode.Open , IO.FileAccess.Read)   '用文件流打开图片
Dim br As New IO.BinaryReader(fs) 
Dim bt1 As Byte() =  br.ReadBytes(fs.Length)
Dim s As String = Convert.ToBase64String (bt1)
Dim bt2 As Byte() = Convert.FromBase64String(s)
Dim ms As New IO.MemoryStream(bt2)       '将字节数组转换为二进制流
Dim image As Image = Image.FromStream(ms)      '将二进制流转换为图片
e.Form.Controls("PictureBox1").Image = image      '显示图片


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2011/5/31 11:18:00 [只看该作者]

老大,没有明白我的意思。

 Dim imageByte() As Byte = Tables("卸船货损管理_Table1").Current('照片') 

’这个列是image类型,已存放的是二进制方式。我把这个二进制的内容保存到一个*。txt文件中。

如何实现等效的代码?谢谢!!

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/31 11:40:00 [只看该作者]

Dim bt1() as Byte= Tables("卸船货损管理_Table1").Current('照片')

Filesys.WriteAlltext(文件名,Convert.ToBase64String (bt1))

Dim bt2 As Byte() = Convert.FromBase64String(Filesys.ReadAllText(文件名))


 


 回到顶部