【问题标题】:Comparing two ByteArrays C#比较两个 ByteArrays C#
【发布时间】:2010-12-26 20:07:30
【问题描述】:

我有一个测试,它将一个字节数组(图像 - jpg)上传到我们的数据库(Sql Server FileStream),然后通过 HttpHandler 检索它。接下来我比较一下两者。

现在,除了前四个字节外,它们几乎相同......

前四个字节是什么?

第一个 byteArray : 255, 216, 255, 224,从这里开始都是一样的

第二个字节数组:63、63、63、63 ...

当处理程序从数据库中检索时,字符串被转换为这样的字节数组

更新

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;

【问题讨论】:

  • 问题是?你想知道为什么这两个数组是不同的还是别的什么?
  • 他的问题是:“前四个字节是什么?”
  • 为什么处理程序从数据库中得到一个字符串?你能显示代码吗?您在这里处理的是纯 二进制 数据,因此实际上没有理由在任何地方为该数据使用字符串数据类型。
  • 只有一个问号,伙计们,所以,又来了,对你们来说,前四个字节是什么?

标签: c# image bytearray


【解决方案1】:

未经修改的SimpleWorkerRequest 不适合接收二进制数据。让我引用MSDN(由我突出显示):

要实现更丰富的功能,例如提供发布的内容和标头以及捕获响应标头或将响应正文作为二进制数据,您应该扩展 SimpleWorkerRequest 并覆盖适当的 HttpWorkerRequest方法。

【讨论】:

    【解决方案2】:

    根据Wikipedia article,前四个字节是:

    • 0xFFD8 图像开始
    • 0xFFEn 应用程序特定标记

    你的是 0xFFE0,它是 APP0 标记,需要在 Start-Of-Image 之后。请参阅www.w3.org/Graphics/JPEG/jfif3.pdf,标题为“用于识别 JPEG FIF 的 APP0 标记”部分。

    【讨论】:

      【解决方案3】:

      如果您的目标只是让它正常工作并且能够更改数据库方案,您可以使用此帖子:http://blogs.msdn.com/domgreen/archive/2009/09/06/comparing-two-images-in-c.aspx

      作者使用 base64 编码来比较现有图像,但您可以使用该编码将图像存储在数据库中。

      br,马塞尔

      【讨论】:

        【解决方案4】:

        如果你想知道为什么会出现这种情况,这是因为 ASCII 编码无法处理 128 以上的字符。前四个字符被转换为 '?'。

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

        【讨论】:

          【解决方案5】:

          Writer 类是一个文本编码流,听上去,您使用的是一个 StreamWriter,它是 System.IO.TextWriter 的一个实现。这是不正确的。您应该使用二进制流以本机格式写入数据。

          希望这有助于为您提供您正在寻找的方向的提示, 最好的祝福, 汤姆。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-01-23
            • 2011-02-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多