Foxtable(狐表)用户栏目专家坐堂 → [求助]字符串转字节数组和DataRow集合比较请教蓝版谢谢


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

主题:[求助]字符串转字节数组和DataRow集合比较请教蓝版谢谢

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
[求助]字符串转字节数组和DataRow集合比较请教蓝版谢谢  发帖心情 Post By:2021/10/19 11:50:00 [只看该作者]

最近在研究串口时,遇到几个问题:

1.字符串以某分割字符如何转字节数组

原成功操作代码
Dim b_sent() As Byte = {&H01,&H0F}   '定义字节数组
Ports("COM3").Write(b_sent, 0, b_sent.length) '写入串口命令

如果需要转变成
Dim s As String = "&H01,&H0F"

目前是用

s = s.Replace("&H","")

Dim strAry() As String = s.Split(",")

Dim b_sent(strAry.Length-1) As Byte
For i As Integer = 0 To strAry.Length - 1
    b_sent(i) = Byte.Parse(strAry(i), System.Globalization.NumberStyles.HexNumber)
Next

Ports("COM3").Write(b_sent, 0, b_sent.length) 

能否将s直接转换成字节数组b_sent() ,考虑过GetBytes(),不会套。


2.  DataRow集合如何判断不同,翻看过其它帖子,没解决。

    Dim drsa As List(of DataRow) = DataTables("数据库1").SQLSelect("列1 = true")
    
    Dim drsb As List(of DataRow) = DataTables("数据库2").SQLSelect("列2 = true")

If drsa.count <> drsb.count Then
    Output.Show("不同")

Else

    For i As Integer = 0 To drsa.count-1
        
        'If drsa(i) <> drsb(i) Then           '提示出错,不能直接比较
         '   Output.Show("不同")
         '   End If
            
        Next

End If





 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110662 积分:563224 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/19 13:44:00 [只看该作者]

1、直接转换即可
Dim s As String = "&H01,&H0F"
Dim ar() As String = s.Split(",")
For Each a As String In ar
    Dim d As Byte = a
    Output.Show(d & "," & Format(d,"x"))
Next

2、datarow无法比较,请比较单元格的内容,比如
If drsa(i)("编号") <> drsb(i)("编号") Then 

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2021/10/19 16:40:00 [只看该作者]

谢谢蓝版。
1.字符串转字节数组,是转字节数组,不是转字符数组。我的意思是将一段字符串,以某分割符,直接转成字节数组。所以再请教下。

Dim s As String = "&H01,&H0F"
Dim ar() As String = s.Split(",")
For Each a As String In ar
    Dim d As Byte = a
    Output.Show(d & "," & Format(d,"x")) '以16进制显示
Next

      如何执行 Ports("COM3").Write(字节数组, 0, 字节数组.length) ?并且字符串可能是"&H01,&H0F" 或 "01 0F" 或 "01-0F",Split后,Dim d As Byte = a不行

For Each a As String In ar
    Dim d As Byte = a
    Ports("COM3").Write(字节数组(d), 0, 字节数组(d).length)  '不会转-_-!!
Next

2.成功解决DataRow集合比较异同,十分感谢!

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110662 积分:563224 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/19 17:44:00 [只看该作者]

神啊,一个字符可以转换,一个数组也就一个遍历的事

Dim s As String = "&H01,&H0F"
Dim ar() As String = s.Split(",")
dim aa(ar.length-1) as byte

For i as integer = 0 to ar.length-1
    aa(i) = ar(i)
Next

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2021/10/19 18:31:00 [只看该作者]

谢谢蓝版,图片点击可在新窗口打开查看最近研究这个有点头晕脑涨,也是用了FOR,其实是想看能不能简单点,用其它转换命令,像下面一样,看能不能直接一行搞定的图片点击可在新窗口打开查看,多了分割符号,转不过弯了。如

Dim txt As String = "你好"
Dim zj() As Byte = System.Text.Encoding.Default.GetBytes(txt)

 回到顶部