【问题标题】:MemoryStream to sbyte[]MemoryStream 到 sbyte[]
【发布时间】:2014-07-20 07:41:03
【问题描述】:

我仍在尝试使用 Novell 的 c# 库向 Open LDAP 中的人添加 jpeg 图像:

Openldap: Add jpegPhoto to inetOrgPerson

Novell.Directory.Ldap.LdapAttribute 的构造函数具有以下签名:

public LdapAttribute(string attrName, sbyte[] attrBytes)

所以,我打算用这个。但是,如何将一个 jpeg 图像从 MemoreyStream 转换为 sbyte[]?

MemoryStream.ToArray() 

方法返回字节[],我不知道该怎么做。

【问题讨论】:

    标签: c# .net memorystream


    【解决方案1】:

    你可以像这样转换数组:

    Array.ConvertAll(bytes, b => (sbyte)b)
    

    【讨论】:

    • 比我要发布的MemoryStream.ToArray().Select(a=>(sbyte)a).ToArray() 想法好多了。
    • 感谢您的回答。但是在原始数组中有大于 127 的值。会发生什么?会导致错误吗?转换不会使图像不可读?
    • @Oscar:它们将被视为负数;底层字节不会改变。这必须在 unchecked 上下文中完成。
    • @DavidCrowell:这正是他问这个的原因。
    【解决方案2】:

    在 CLR 上,您可以将 byte[] 固定时间转换为 sbyte[]See my previous answer on this little-known trick.

    (sbyte[])(object)MemoryStream.ToArray(); //compiles and runs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2012-09-02
      相关资源
      最近更新 更多