比较两个ByteArrays C#

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以上的字符.前四个字符转换为'?'.

由于字节数组中有图像,因此不应尝试将其转换为文本以便比较两个数组.为了比较,您应该遍历所有字节并打印它们的值.最好为此使用十六进制表示法.