Vb6 Visual Basic 6负字节检查

Vb6 Visual Basic 6负字节检查,vb6,vb6-migration,Vb6,Vb6 Migration,我正在将VB6程序转换为C#,我遇到了以下代码块(b是字符串中的字节数组,lngLen是我们正在初始化的长度指针): 如果UBound(b)=2,则 如果b(UBound(b)-2)>=0且b(UBound(b)-1)=&HFE且b(UBound(b))=&HFF,则 lngLen=UBound(b)-3 其他的 lngLen=UBound(b) 如果结束 其他的 lngLen=UBound(b) 如果结束 在第4行,我可以看出它正在检查字节数组的最后两个字符中的BOM,但是第一次检查b(UB

我正在将VB6程序转换为C#,我遇到了以下代码块(b是字符串中的字节数组,lngLen是我们正在初始化的长度指针):

如果UBound(b)=2,则
如果b(UBound(b)-2)>=0且b(UBound(b)-1)=&HFE且b(UBound(b))=&HFF,则
lngLen=UBound(b)-3
其他的
lngLen=UBound(b)
如果结束
其他的
lngLen=UBound(b)
如果结束

在第4行,我可以看出它正在检查字节数组的最后两个字符中的BOM,但是第一次检查
b(UBound(b)-2)>=0
做什么?字节不可能为负吗?

是的,VB6字节不可能为负。值只能为0-255,如图所示


检查
b(UBound(b)-2)>=0
将始终为
True
,并且可以从VB6代码中删除。检查不需要迁移到C#。是的,VB6字节不可能为负。值只能为0-255,如图所示


检查
b(UBound(b)-2)>=0
将始终为
True
,并且可以从VB6代码中删除。检查不需要迁移到C#。

一个字节不可能是负数吗?
-是的。这段代码可能也被移植到了VB6上,也可能是由一位经验不足或过于谨慎的VB6程序员编写的。在这个例子中,我怀疑额外的检查是否会以可测量的方式影响执行时间。
一个字节不可能是负数吗?
-是的。这段代码可能也被移植到了VB6上,也可能是由一位经验不足或过于谨慎的VB6程序员编写的。在本例中,我怀疑额外检查是否会以可测量的方式影响执行时间。
If UBound(b) <= 0 Then
    lngLen = UBound(b)
ElseIf UBound(b) >= 2 Then
    If b(UBound(b) - 2) >= 0 And b(UBound(b) - 1) = &HFE And b(UBound(b)) = &HFF Then
        lngLen = UBound(b) - 3
    Else
        lngLen = UBound(b)
    End If
Else
    lngLen = UBound(b)
End If