Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#字符串变量传递base64字符串。错误:索引超出了数组的边界_C#_String_Base64 - Fatal编程技术网

使用c#字符串变量传递base64字符串。错误:索引超出了数组的边界

使用c#字符串变量传递base64字符串。错误:索引超出了数组的边界,c#,string,base64,C#,String,Base64,还是个新手。 我想用一个变量替换长Base64字符串,但不断出现错误:索引超出了数组的边界 场景:我正在从SQL数据库检索完整的base64字符串,例如data:image/gif;base64,r0lgodlhaqabaaaaaaaap///yh5baeaaaaaaaaaaaaaaaaaaaaaaaaaaibraa7 然后,我拆分了在“,”之后我想要的部分的字符串 public SqlDataReader reader; public String ClientSigImg;

还是个新手。 我想用一个变量替换长Base64字符串,但不断出现错误:索引超出了数组的边界

场景:我正在从SQL数据库检索完整的base64字符串,例如data:image/gif;base64,r0lgodlhaqabaaaaaaaap///yh5baeaaaaaaaaaaaaaaaaaaaaaaaaaaibraa7

然后,我拆分了在“,”之后我想要的部分的字符串

    public SqlDataReader reader;
    public String ClientSigImg;
    public String ClientSigImg1;

    ClientSigImg = reader[0].ToString();
    ClientSigImg1 = ClientSigImg.Split(',')[1];
因此,上面的base64字符串根据用户输入而不是下面的手动输入进行更改

    string base64 = @"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
    byte[] imageBytes = Convert.FromBase64String(base64);
我想用以下内容替换该长字符串:

    string base64 = @""+ ClientSigImg1 +"";
    byte[] imageBytes = Convert.FromBase64String(base64);
看起来好像:

ClientSigImg = reader[0].ToString();
Is未返回带有逗号的字符串(请调试并确认)。这意味着您将在这行代码运行时看到所描述的错误:

ClientSigImg1 = ClientSigImg.Split(',')[1];
这是因为索引1将不存在。因此,请检查您是否确实从查询中返回了正确的数据

此外,查询返回正确数据后,您可以整理代码并简单使用:

byte[] imageBytes = Convert.FromBase64String(ClientSigImg1);
这是因为:

string base64 = @""+ ClientSigImg1 +"";

除了在字符串前后添加空字符串之外,实际上不做任何事情,因此,不添加任何内容

请一步一步地调试代码,看看为什么字符串不是2的数组。您知道
string base64=@“+ClientSigImg1+”
实际上并没有做任何
string base64=ClientSigImg1不行?我昨天一整天都在确认和尝试,但还是一无所获。我进行了调试,可以确认它返回的是一个字符串。我的意思是一个包含逗号的字符串。调试时,是否在字符串中看到逗号?可能值得将split放在单独的行上,因此
var splitDebug=ClientSigImg.split(',')
然后跳过它查看
splitDebug
包含的内容(我猜长度=1,所以没有索引1)。