如何比较两个byte长度的大小?byte[Length]索引超出了数组界限

ltyto1993 2017-08-21 09:23:11
public byte[] GetSomeOTPKey(int offset, int Length)
{
var allNum = new byte[keyFile.Length];
keyFile.Read(allNum, offset, Convert.ToInt32(keyFile.Length));
for (int i = 0; i < Convert.ToInt32(keyFile.Length); i++)
{
if (allNum[i] != 0)
{
keyFile.Position = i;
break;
}
}
var result = new byte[Length];
keyFile.Read(result, offset, Length);
if (result[Length] < allNum[Length]) (索引超出了数组界限)
{

Console.WriteLine("fail");
}


首先会从文件中去读数字,如果输入3个字符,则会从文件读取3个数字对应字符。但是现在需要增加一个判断,如果文件中的数字不够了,则结束。
例如:
Length 5 int
+ allNum {byte[3]} byte[]
+ result {byte[5]} byte[]
我输入了5个字符,但是可用数字只有3个。

我想的是,根据result和allNum来对比,如果allNum小于result,则表示文件中没有足够的数字了。但是这俩都是byte类型,我不知道怎么去对比..求大神指教。
...全文
396 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltyto1993 2017-08-21
  • 打赏
  • 举报
回复
引用 7 楼 guwei4037 的回复:
正规的做法是抛出一个异常,不过随便你。
感谢,大概有点思路了,我自己再研究研究,谢谢你!
全栈极简 2017-08-21
  • 打赏
  • 举报
回复
正规的做法是抛出一个异常,不过随便你。
ltyto1993 2017-08-21
  • 打赏
  • 举报
回复
引用 5 楼 guwei4037 的回复:
不会的,return null就直接返回了,不执行方法内部下面的代码的。
嗯嗯,我试了,是不会执行内部下面的代码。 System.NullReferenceException:“未将对象引用设置到对象的实例。” key 是 null。 但是现在调用key是null,会报错,我是否应该在program里再加一个判断,如果key为null,则直接return?
全栈极简 2017-08-21
  • 打赏
  • 举报
回复
不会的,return null就直接返回了,不执行方法内部下面的代码的。
ltyto1993 2017-08-21
  • 打赏
  • 举报
回复
引用 3 楼 guwei4037 的回复:
当然这里你可以return result ,看你的逻辑。主要是return语句的应用。
感谢回复,如果return null 还是会运行后面的代码,会报错。我想实现的是输出一句失败之后就结束。好像retrun不能实现吧?谢谢。
全栈极简 2017-08-21
  • 打赏
  • 举报
回复
当然这里你可以return result ,看你的逻辑。主要是return语句的应用。
全栈极简 2017-08-21
  • 打赏
  • 举报
回复
if (allNum.Length < result.Length) { return null; }
ltyto1993 2017-08-21
  • 打赏
  • 举报
回复
- - 发帖之后发现 if (allNum.Length < result.Length) 这样就可以了...... 顺便再问一句,如果满足条件,现在会输出一句话,如何才能终止代码运行?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧