Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
395 views
in Technique[技术] by (71.8m points)

substring - System.ArgumentOutOfRangeException: 'Index and length must refer to a location within the string. in c#

        string input = "";
        string result = "";
        if (Directory.Exists(Path.GetDirectoryName(filePath)))
        {
            if (File.Exists(filePath))
            {
                input = File.ReadAllText(filePath).ToString();
                List<byte> bList = new List<byte>();
                for (int i = 0; i < input.Length; i += 8)
                {
                    bList.Add(Convert.ToByte(input.Substring(i, 8), 2));
                }
                result = Encoding.UTF8.GetString(bList.ToArray());
                return result;

            }

Exception occurs in Substring inside the for loop Help me to get rid of this exception. Thanks in Advance

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You are trying to access a substring without verifying that there are enough characters in the string to do so.

Let's say the file contains 6 characters. That means input.Length is 6. The first iteration of the for loop will make this method call: input.Substring(0, 8). However, the string only has 6 characters in it, so you get an ArgumentOutOfRangeException.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...