Tag: 二进制文件

从二进制文件中读取变量大小的字符串(VB6与C#)

我有一个包含以下内容的二进制文件: 以下代码用于在旧的VB6程序中读取此内容: Private Type tpClient Firstname As String LastName As String Birth As String Adres As String Geslacht As String IDNummer As Long SSNummer As String DatabaseID As Long Telefoon1 As String Telefoon2 As String End Type Open strFilePath For Random Access Read As #intFileNumber Get #intFileNumber, 1, ClientData ‘ ClientData is of type tpClient […]

二进制读写器同时打开?

我正在编写处理使用哈希值的文件的代码。 我需要读取一个块,然后散列它,然后写入它,然后读取另一个块等。 换句话说,我需要做很多阅读和写作。 我确信这很简单,但我只是想由专业人士运行它… 做以下事情是可能的,也是可以接受的: BinaryReader br = new BinaryReader (File.OpenRead(path)); BinaryWriter bw = new BinaryWriter (File.OpenWrite(path)); br.dostuff(); bw.dostuff(); 我记得在尝试打开和写入文件时遇到某种冲突的文件流错误,我不知道我做了什么才能得到它。 问题是两个文件流吗? 我可以有一个流来读取和写入吗?

C#BinaryFormatter – 使用另一个命名空间中的对象反序列化

最近,我们将部分代码移到了不同​​的项目库中。 不幸的是,似乎这些数据已经用BinaryFormatter序列化到数据库中(不要问我为什么,我不知道,我讨厌这个想法)。 现在我负责创建一个更新数据库的更新工具(当我们的软件根据版本检测到需要更新的数据库时,该工具会自动启动): 创建新列 反序列化二进制列 将反序列化的列写入新列 删除旧的二进制列 我的问题是,当我尝试反序列化时,它告诉我: Unable to find assembly ‘MyOldAssemblyName, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a5b9cb7043cc16da’. 但是这个组件不再存在了。 我把这个类放在我的“更新程序”项目中没有问题,但我无法保持这个旧项目只包含这个文件。 有没有办法指定BinaryFormatter它必须反序列化它用指定类接收的Stream? 或者说组件已重命名,或???

优化多维通用数组的二进制序列化

我有一个我需要二进制序列化的类。 该类包含一个字段,如下所示: private T[,] m_data; 这些多维数组可以相当大(数十万个元素)和任何原始类型。 当我在一个对象上尝试标准的.net序列化时,写入磁盘的文件很大,我认为.net存储了很多关于元素类型的重复数据,可能没有那么高效。 我一直在寻找自定义序列化器,但没有看到任何处理多维通用数组。 我已经在内存流的字节数组上尝试了内置的.net压缩,序列化后取得了一些成功,但没有像我希望的那样快速/压缩。 我的问题是,我应该尝试编写一个自定义序列化程序,以便为适当的类型优化序列化此数组(这看起来有点令人生畏),还是应该使用标准的.net序列化并添加压缩? 关于最佳方法的任何建议都将是最受欢迎的,或链接到显示如何处理多维通用数组的序列化的资源 – 如我所发现的现有示例所提到的不支持这样的结构。

C#中基于位的BinaryWriter

我正在研究基于位的B / W / Greyscale预编译字体格式,并且在读取或写入格式时遇到了问题,(我无法确定问题的位置。(我确实有基于B / W位的版本工作,但是别名字体看起来不太好,正如您可以想象的那样,尤其是在使用320×200像素屏幕时))但是决定只使用BinaryWriter比写入更容易当我拉动图像数据时,一个bool []。 文件中像素的基本格式如下所示: 1 – 白色像素(最短,因为这将是大多数像素) 00 – 黑色像素(无理由为纯黑色像素写入10位,其中有合理的数量) 01 – 灰度像素,后跟1个字节,描述像素的阴影 现在,编写所需信息的一切都很好,花花公子,因为它是全部字节,但默认的.Net 4.0 BinaryWriter将布尔值写为完整字节,并且可以想象,否定了基于位的使用格式。 所以我想知道,有没有BinaryWriter,(和BinaryReader)实现那里的基于位的 编辑:我最终创建了自己的。 (请参阅代码的答案。)

替换二进制文件中的字节序列

将二进制文件中的字节序列替换为相同长度的其他字节的最佳方法是什么? 二进制文件非常大,大约50 MB,不应该一次加载到内存中。 更新:我不知道需要替换的字节位置,我需要先找到它们。

如果用户没有安装.NET,我该如何部署C#应用程序?

我有一个C#程序,我想让我的用户可以使用,但问题是它需要.NET framework 4.0版。 这是一个问题,因为它最近刚刚发布(2010年4月),很多人可能没有它。 更糟糕的是,下载和安装框架需要一段时间(约10分钟)。 有什么方法可以安装我需要的框架的一部分吗? 如果不可能,我可以将代码编译为特定系统的本机二进制文件 例如。 x86 32位,x86 64位等 我看过一家名为’spoon’http://spoon.net/的公司,但看起来它只是模仿服务器上的应用程序(有点像citrix)。 我该怎么做才能解决这个难题?

如何从URL中获取数据并将其保存到C#.NET中的二进制文件中,而不会出现编码问题?

在C#.NET中,我想从URL获取数据并将其保存为二进制文件。 使用HttpWebRequest / Streamreader读取字符串并使用StreamWriter保存可以正常使用ASCII,但非ASCII字符会受到损坏,因为系统认为它必须担心编码,编码为Unicode或来自或等等。 从URL获取数据并将其保存到文件(二进制文件)的最简单方法是什么? // This code works, but for ASCII only String url = “url…”; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); // execute the request HttpWebResponse response = (HttpWebResponse) request.GetResponse(); // we will read data via the response stream Stream ReceiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader( ReceiveStream ); string contents = readStream.ReadToEnd(); […]

sql binary to c# – 如何在c#中获取二进制的SQL二进制文件

这对你们来说似乎是一个愚蠢的问题。 我有一个带有一个二进制列的SQL表。 它有一些二进制格式的数据。 例如0x9A8B9D9A002020202020202020202020 它等同的英语表示是”test”. 是否可以在c#将此string转换为等效的binaryforms? string s = “test”; // C# code to convert s to it’s equivalent SQL binary form.

如何“按原样”将二进制数据写入Registry(即:我只将可见二进制数据作为来自regedit的字符串)

我一直在谷歌上搜索这一天并没有找到一整天的工作解决方案。 我对二进制数据类型一无所知(因为我从来没有故意使用过它们)而且我正在尝试将我在注册表中看到的二进制值写入注册表。 现在,我所看到的是以下[如下所示] …如果我尝试将其作为字符串传递给WinAPI中的RegSetValueEx ,当然它会出错……我不知道我需要什么’数字’传入RegSetValueEx lpData As Any, RegSetValueEx参数(我尝试了一个位数组),以便它在regedit中如下所示[如下所示]。 我真的不知道,我的测试在位数组中放置随机数只会产生相应的随机“数字”,如注册表中所见,我不明白如何将它们“逻辑”地“绑定”在一起。 这是罪魁祸首! Windows注册表编辑器版本5.00 [HKEY_CURRENT_USER \ SOFTWARE \一些\注册\位置] “的RegistryKey”=己烷:01,00,00,00,d0,8c,9D,DF,01,15,d1,11,8c,7α,00,c0,4f,c2,97,EB,\ 01,00,00,00,7b,96,8a,78,B9,CC,c1,4f,b1,35,11,01,5e,3C,25,9b,00,00,00,00,02, \ 00,00,00,00,00,10,66,00,00,00,01,00,00,20,00,00,00,22,1c,B6,EA,E3,a5,06,8b, \ 58,69,7b,89,19,b3,1f,a3,1d,D8,b7,5b,30,72,65,4b,22,41,a8,73,d1,92,BB,36,00, \ 00,00,00,0e,80,00,00,00,02,00,00,20,00,00,00,87,a0,1a,79,A7,C9,FE,图7A,图1B,图24, \ 图9a,71,5d,CF,7B,87,BC,1B,14,6e,59,96,e3,42,C6,f5,08,78,00,a6,42,3d,30,00,00, \ 00,02,0a,2A,EA,d9,49,0a,FA,48,B3,F1,E2,AE,E2,f8,42,a2,54,1e,56,DC,DD,9B,0D, \ 图9b,73,41,72,54,CC,64,49,99,f1,5c,12,70,33,8e,FB,b1,31,66,DF,B4,e0,02,BB,40, \ 00,00,00,13,c2,7d,88,16,AF,56,AC,82,21,39,95,43,04,50,71,c2,4c,6A,44,a6,03, \ EA,32,4d,D9,f3,0f,22,2e,41,17,2e,26,11,9b,10,9d,99,60,FC,12,D2,CE,7c中,1C,78, \ 图6b,f0,59,23,FD 84,46,2c,58,41,EE,31,7a,f8,95,57,54 如果我在字符串或位数组中有以下内容,我必须填充比特数,以便注册表在写入时输出[上面]? 或者,我怎样才能弄明白该怎么做? 我希望有一个函数可以读取我的二进制数据串并将其转换为真正的二进制格式,以提交给VB6中的RegSetValueEx函数或VB.Net或C#中的其他函数(这实际上是一个与语言无关的问题,并且问题存在于所有语言中;即:相同的过程)。 我希望有一个解决方案,我可以遵循这个或领导。 谢谢你们,当我把头发拉出来时,你们是最棒的!