使用c#字符串变量传递base64字符串。 错误:索引超出了数组的范围
还是一个新手。 我想用变量替换长Base64字符串,但不断收到错误:索引超出了数组的范围。
场景:我正在从SQL数据库中检索完整的base64字符串,例如data:image / gif; base64,R0lGODlhAQABAIAAAAAAAP /// yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
然后我将字符串拆分为我想要的部分,在’,’之后。
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();
不返回带逗号的字符串(请调试并确认)。 这意味着当这行代码运行时,您将看到您正在描述的错误:
ClientSigImg1 = ClientSigImg.Split(',')[1];
这是因为索引1不存在。 因此,请检查您是否确实从查询中返回了正确的数据。
此外,一旦您的查询返回正确的数据,您可以整理您的代码,只需使用:
byte[] imageBytes = Convert.FromBase64String(ClientSigImg1);
那是因为:
string base64 = @""+ ClientSigImg1 +"";
除了在字符串之前和之后添加空字符串以外,实际上没有做任何事情,因此,不添加任何内容!