Tag: 字节

MemoryStream来自bytes数组,具有不同类型的数据

我想创建一个包含int32,int16,单值的内存流。 使用二进制文件是没用的,所以我试图创建字节数组。 因为值是不同的类型,我不知道如何正确地做到这一点。 所以我尝试这样做: byte[] tab = new byte[]{2,0,0,0,3,0,3,0} – 2是int32(四个字节),另外两个3是int16(两个字节) 这工作正常,但是当我想添加一些单个值时,它会产生错误。 我不能这样做: byte[] tab = new byte[]{2,0,0,0,3,0,3,0,4.4f,5.6f} 我必须有正确格式的流,因为这个流将在这个方法中读取: short[] rawData; float[] modulusData; public void rawData(Stream s) { BinaryReader br = new BinaryReader(s); int dataCount = br.ReadInt32(); if (dataCount > 0) { rawData = new short[dataCount]; for (int i = 0; i 0) { modulusData […]

如何读取字节和字符串的混合文件

我有一个带有大量字符串行和部分字节编码数据的混合文件。 例: –Begin Attach Content-Info: /Format=TIF Content-Description: 30085949.tif (TIF File) Content-Transfer-Encoding: binary; Length=220096 II*II* Îh ÿÿÿÿÿÿü³küìpsMg›Êq™Æ™Ôd™‡–h7ÃAøAú áùõ=6?Eã½/ô|û ƒú7z:>„Çÿý<þ¯úýúßj?å¿þÇéöûþ“«ÿ¾ÁøKøÈ%ŠdOÿÞÈGÈù#ä|’ò:#ä|Š”:#¢:;ˆèŽˆèʤV’ÑÑÑÑÑÑÑÑÑçIþ×o(¿zHDDDDDFp’.Ñ:ˆR:aAràÁ¬LˆÈù!ÿÿï[ÿ¯Äàiƒ”VƒDÇ)Ê6PáÈê$9C”9C†‡CD¡pE@¦œÖ{i~Úý¯kköDœ4ÉU”8`ƒt!l2G –End Attach– 我尝试用streamreader读取文件: string[] lines = System.IO.File.ReadAllLines(@”C:\Users\Davide\Desktop\20041230000D.xmm”) 我逐行读取文件,当行等于“Content-Transfer-Encoding:binary; Length = 220096”时,我读取所有后续行并写入“文件名”(在本例中为30085949.tif)文件。 但我正在读字符串,而不是字节数据和结果文件已损坏(现在我尝试使用tiff文件)。 对我有什么建议吗? 解决方案感谢您的回复 我采用了这个解决方案:我构建了一个LineReader扩展BinaryReader: public class LineReader : BinaryReader { public LineReader(Stream stream, Encoding encoding) : base(stream, encoding) { } public int currentPos; private StringBuilder stringBuffer; […]

如何在Microsoft报表中显示来自字节数组的图像

我正在使用Report文件和ReportViewer控件来显示在运行时从对象动态加载数据的报表。 我需要显示一个图像,该图像作为字节数组存储在对象中。 PictureBox的值当前设置为: =First(Fields!ImageData.Value, “dtstItemImage”) 我使用以下方法设置DataSource: ImageBindingSource.DataSource = this.item.Image.ImageData; 代码编译并运行,但图像不会显示在报告中 。 这是因为PictureBox需要绑定到Image对象(而不是字节数组)吗? 或者我可能需要设置PictureBox的一些属性? 更新1 我已经为PictureBox添加了一个边框,只是为了确保它是可见的,它确实显示在报告中。 它只是不包含图像。 更新2 我在我的代码中修正了一个错误。 我改变了: ImageBindingSource.DataSource = this.item.Image.ImageData; 至: ImageBindingSource.DataSource = this.item.Image; 因为PictureBox绑定到ImageData字段但是DataSource是Image对象。 现在我得到一个小十字图标而不是什么(至少对我来说)表示一些进展,但我不知道字节[] – 位图转换代码需要在哪里。

字节变量如何存储在内存中?

我正在读一本关于C#( Pro C#和Andrew Troelsen的.NET 4平台 )的书,我刚读过这段话: 如果要构建将部署到低内存设备(例如支持.NET的手机或PDA)并且需要尽可能节省内存的.NET应用程序,则更改枚举的基础类型会很有帮助。 字节使用更少的内存是真的吗? 出于性能原因,它们不是存储在4个字节上吗? 我记得在某处读过后者,但我找不到任何关于它的信息,甚至在C#规范中都没有。

Bitmap.Save(Stream,ImageFormat)如何格式化数据?

我有一个非透明的彩色位图,长度为2480,宽度为3507。 使用Bitmap.GetPixel(int x, int y)我能够获得位图中每个像素的颜色信息。 如果我将位图喷射到byte []: MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Bmp); ms.Position = 0; byte[] bytes = ms.ToArray(); 然后我希望有相同的信息,即我可以转到字节[1000]并读取该像素的颜色信息。 事实certificate,我的字节数组比我预期的要大。 我以为我会得到一个2480 x 3507 = 8697360元素的数组。 相反,我得到一个包含8698438个元素的数组 – 我认为是某种标题。 我的数组中的字节以什么格式存储? 是否有一个1078字节长的标题,后跟每个字节元素的Alpha,Red,Green,Blue值,还是其他什么? 我只需要每个像素的颜色信息。 我不关心标题(或确实是透明度),除非我需要它来获取颜色信息。

使用BinaryWriter将一个位写入二进制文件

我想将一个位写入二进制文件。 using (FileStream fileStream = new FileStream(@”myfile.bin”, FileMode.Create)) using (BinaryWriter binaryWriter = new BinaryWriter(fileStream)) { binaryWriter.Write((bool)10); } 像binaryWriter.Write((bit)1); 当我使用binaryWriter.Write((bool)1) ,文件有一个字节,但我想写一个字节。 这可能吗?

快速字符串到byte 的转换

目前我使用此代码将字符串转换为字节数组: var tempByte = System.Text.Encoding.UTF8.GetBytes(tempText); 我经常在我的应用程序中调用此行,我真的想使用更快的行。 如何将字符串转换为字节数组比默认的GetBytes方法更快? 也许有一个不安全的代码?

为什么File.ReadAllBytes与使用File.ReadAllText时的结果不同?

我有一个内容为“test”的文本文件(UTF-8编码)。 我尝试从这个文件中获取字节数组并转换为字符串,但它包含一个奇怪的字符。 我使用以下代码: var path = @”C:\Users\Tester\Desktop\test\test.txt”; // UTF-8 var bytes = File.ReadAllBytes(path); var contents1 = Encoding.UTF8.GetString(bytes); var contents2 = File.ReadAllText(path); Console.WriteLine(contents1); // result is “?test” Console.WriteLine(contents2); // result is “test” conents1与contents2不同 – 为什么?

使用Stream writer将特定字节写入textfile

好吧,我正在尝试将一些值和字符串写入文本文件。 但是这个文本文件必须包含2个字节 这些是我想在完成向其写入其他值后插入到我的文本文件中的2个字节: 我试过这个方法,但我不知道如何通过它写字节 using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8)) 在把我想要的字符串放到它上面后,我不知道如何将它们写入文本文件。

没有绑定检查的C#byte 比较

我正在寻找性能有效的方法来比较两个字节[]的相等性。 大小超过1 MB,因此应尽量减少每个数组元素的开销。 我的目标是通过避免对两个数组的重复绑定检查来击败SequenceEqual或每个项目上的手动编码for循环的速度。 就像Array.Copy可以导致快速memcpy ,什么会导致memcmp ?