【c# – 为什么我在图像的开头有不需要的额外字节?】教程文章相关的互联网学习教程文章

c# – FxCop说我应该返回一个通用列表接口而不是字节数组.我是不是该?

我正在编写一个库而不是从EventArgs派生中返回一个字节数组,它说我应该返回类似IList或ReadOnlyCollection的东西. 通常情况下,我会全力以赴,但大多数现有.NET Framework使用字节数组而不是通用列表接口. 因此,如果我使用IList,那么在访问eventargs时,如果客户想要调用File.WriteAllBytes,他或她将不得不使用System.Linq;并调用ToArray扩展方法以字节数组的形式获取IList.当然还有其他方法可以做到这一点,但这是最优雅和典型的. 这个...

c# – TcpClient性能 – 发送4个标量值比发送包含所有值的1字节数组慢得多【代码】

我正在编写一个应用程序,其中两个应用程序(比如服务器和客户端)通过localhost上的基于TCP的连接进行通信. 代码对性能至关重要,所以我尽量优化. 以下代码来自服务器应用程序.要发送消息,我的天真方法是从TcpClient的流创建BinaryWriter,并通过BinaryWriter写入消息的每个值.所以我们假设消息由4个值组成;一个长的,然后是一个bolean值,然后再多2个;天真的做法是:TcpClient client = ...; var writer = new BinaryWriter(client.GetS...

c# – 使用流通过Json.NET创建BSON字节数组(用于文件格式)【代码】

我们需要BSON相当于{"Header": {"SubHeader1": {"Name": "Bond","License": 7},"SubHeader2": {"IsActive": true}},"Payload": /* This will be a 40GB byte stream! */ }但我们得到的是: 如您所见,有效载荷首先出现,然后是标题的其余部分! 我们使用的是Json.NET的BSON编写器(Bson.BsonWriter.WriteValue(byte [] value)),但它只接受实际的byte [],而不是Stream.由于我们的有效载荷将是10的GB,我们必须使用流,所以我们试图解决(下...

c# – 用户创建的像素字节数组似乎无法正确更新(WPF)【代码】

我有一个系统,我可以从相机收集8位灰色图像,将数据放入WriteableBitmap并在WPF图像对象上显示图像.这项工作发生在相机线程中.我用这篇文章来帮助我:How to create a BitmapImage from a pixel byte array (live video display) 我想要做的是复制图像数据的像素数据的子集.在相机线程中的帧更新期间,我试图在单独的字节数组中创建数据的副本.我的代码似乎首先工作,但是经过几次迭代后,我的缓冲区变量从一系列灰度级(0-255)变为每个...

使用UnmanagedExports和JNA将字节数组从C#返回到Java【代码】

我最近发现库UnmanagedExports 允许我使用JNA直接从Java访问C#-methods. 有没有人知道我尝试将字节数组从C#返回给Java有什么问题? 这是我的例子: C#代码:using System; using RGiesecke.DllExport; namespace JnaTestLibrary {public class JnaTest{[DllExport]public static byte[] returnT1(){byte[] t1 = {1,2,3,4,5};return t1;}} }Java代码:package me.mt.test; import com.sun.jna.Library; import com.sun.jna.Native; ...

相同的字节数组=> Java和C#中的不同BigInteger值【代码】

参见英文答案 > Java BigInteger vs Mono .net BigInteger 2个我有Java和C#代码如下:byte[] byteArray = {52, 51, 102, 100, 55, 48, 48, 48, 57, 97, 57, 55, 97, 55, 100, 51, 49, 49, 99, 53, 54, 52, 52,48, 52, 55, 99, 99, 99, 55, 48, 48, 102, 56, 100, 48, 56, 97, 57, 100}; BigInteger byteArrayAsBigInt = new BigInteger(byteArray);正如您所看到的,两个阵列都是相同的.但是为什...

c# – 通过NetworkStream BinaryReader / BinaryWriter计算TcpClient传输的字节数

我正在使用围绕TcpClient构建的网络协议,使用BinaryReader从底层NetworkStream读取字节(相反,使用BinaryWriter写入). 该协议以UTF-8编码传输字符串,并调用reader.ReadString()从流中读取它们(使用writer.Write(someStr)写入). 有没有一种简单的方法可以确定从NetworkStream读取(或写入)的字节数,而无需跳过箍来计算传输的字符串的实际字节长度? 请注意,BinaryWriter.Write()在字符串的实际字节之前写入一个7位编码的整数,这使得任...

c# – 如何读取流的所有字节但是最后8个【代码】

我有以下代码:using (var fs = new FileStream(@"C:\dump.bin", FileMode.Create)) {income.CopyTo(fs); }收入是我需要保存到磁盘的流,问题是我想忽略最后8个字节并在此之前保存所有内容.收入流是只读的,只是转发,所以我无法预测其大小,我不想因为发送大量文件而在内存中加载所有流. 任何帮助将不胜感激.解决方法:也许(或者更确切地说)有一种更清洁的方式,但在我想到的第一个想法是实用的时候是这样:using (var fs = new FileStr...

在C#中显示来自原始未压缩字节源的实时视频:WPF与Win表单

我有一个实时的16位灰度视频流,通过内存中的环形缓冲区作为原始的未压缩字节流(每像素2个字节,2 ^ 18像素/帧,32帧/秒). (这来自科学级相机,通过PCI帧抓取器).我想对视频进行一些简单的处理(剪辑动态范围,着色,添加叠加),然后使用C#在窗口中显示它. 我使用Windows Forms& GDI(对于每个帧,构建一个Bitmap对象,根据我的后处理步骤写入原始的32位RGB像素值,然后使用Graphics类绘制帧).但是这使用了我想要用于其他事情的大量CPU.所以我对...

c# – 将字节转换为字符串【代码】

我想将一个字节转换为字符串. 例:byte testByte = 0x05;testByte应转换为“00000101” 我试过Convert.ToString(testByte,2),但它只返回“101”解决方法:您已经非常接近了,您需要做的就是在已经生成的String上调用PadLeft:Convert.ToString(testByte, 2).PadLeft(8,'0');

c# – 使用TextReader读取字节【代码】

在过去,我一直在使用BinaryReader读取几个字节,但最近,我收到了这个错误:An error has occurred: Probable I/O race condition detected while copying memory. The I/O package is not thread safe by default. In multithreaded applications, a stream must be accessed in a thread-safe way, such as a thread-safe wrapper returned by TextReader's or TextWriter's Synchronized methods. This also applies to classes l...

c# – 为char数组分配一个字节值【代码】

方法Array.SetValue(Object value,int index)允许使用公共索引器语法通常允许的值/数组类型对的赋值,并在尝试组合通常不允许的类型时抛出异常.例如,考虑以下局部变量声明:int[] twoints = new int[2] { 5, 6 };以下四行不会抛出任何运行时或编译时异常:twoints[1] = (sbyte)7; twoints.SetValue((sbyte)7, 1); twoints[1] = (char)7; twoints.SetValue((char)7, 1);另一方面,这四行中的每一行都会在运行时或在设计时抛出异常:tw...

c# – 允许我选择字节顺序的BlockCopy替代方法【代码】

假设我有一个字节数组:byte[] input = { 0xFF, 0xFc, 0x00, 0x00 }无论类型如何,您都可以使用Buffer.BlockCopy将字节从一个数组复制到另一个数组.所以,我可以这样做:uint[] output = new uint[1]; Buffer.BlockCopy(input , 0, output, 0, input.Length);这会将字节从输入复制到输出,并在整个过程中将它们从字节数组转换为uint数组. 问题是BlockCopy以小字节顺序解释字节.我需要一个使用大字节序的副本.因此,不是像我需要的那样得...

c# – 使用三元运算符时,为什么要显式地将十六进制值转换为字节?【代码】

例如:byte a = 0x01; // Works fine byte b = foo() ? 0x01 : 0x02; // Get error "Cannot impicitly convert int to byte"为什么会这样?解决方法:当您为byte类型的变量分配数字文字(无论是十六进制还是十进制)时,编译器会检查该值是否适合一个字节.一旦编译器知道该值适合,它就会将文字视为字节类型,与变量的类型相匹配. 但是,当您使用三元表达式时,编译器不再确定表达式的值是什么.默认情况下,它将条件表达式中的值视为整数文字...

将每像素2字节的MONO-16位图像转换为MONO-16位,C#中每像素1字节【代码】

我在C#工作,我有一个单色相机给我两个连续的图像.我想减去这些图像. 相机设置为MONO-16,分辨率为1980960. 相机向我返回2457600个元素的向量,因为每个像素由两个字节表示,因此{1980960 = 1228800} * 2个字节/像素= 2457600. 问题是我必须将两个2457600元素向量转换为两个1228800向量才能进行减法. 所以我需要将2457600的两个连续元素组合成一个元素,这样我最终得到一个1228800元素的向量,其元素有16位范围(0-65536). 我可能需要创建...