Lie*_*oen 1 c# image bytearray
我有一个测试,它将bytearray(image-jpg)上传到我们的数据库(Sql Server FileStream),然后通过HttpHandler检索它.接下来我比较两者.
现在,它们几乎是相同的,除了前四个字节......
前四个字节是什么?
第一个byteArray:255,216,255,224,从这里开始它们是相同的
第二个字节阵列:63,63,63,63 ......
当处理程序从db检索时,字符串将转换为类似这样的bytearray
更新
StringWriter writer;
SimpleWorkerRequest worker;
writer = new StringWriter();
worker = new SimpleWorkerRequest(page, query, writer);
HttpRuntime.ProcessRequest(worker);
writer.Flush();
var encoding=new ASCIIEncoding();
var blob = encoding.GetBytes(writer.GetStringBuilder().ToString());
return blob;
Run Code Online (Sandbox Code Playgroud)
kgi*_*kis 12
如果你想知道为什么会发生这种情况,这是因为ASCII编码不能处理128以上的字符.前四个字符转换为'?'.
由于字节数组中有图像,因此不应尝试将其转换为文本以便比较两个数组.为了比较,您应该遍历所有字节并打印它们的值.最好为此使用十六进制表示法.