【如何在c#中读取字节】教程文章相关的互联网学习教程文章

解析字节数组时抛出什么异常? (C#)【代码】

我正在解析一个字节数组,这实际上是一个在消息总线上发送的修复长度记录.如果数据无效(乱码或不符合记录规范),那么我想抛出异常.像这样的东西:public DomainObject ParseTheMessage(byte[] payload){Validate(payload);//throws an exception if invalid...do creation of domain object }有没有人知道我是否可以在这些情况下抛出一个很好的标准异常,或者我应该创建自己的特定异常?解决方法:你可以使用ArgumentException:throw ...

如何在c#中读取字节【代码】

我正在尝试处理我的传入缓冲区并确保在每次传输时获得所有125字节的数据.我创建了一个字节数组.我怎么知道正在接收125字节的数据.我尝试显示字节数,但它显示不同的数字,我不确定它是否是正确的编码,以获得接收的字节数. 这是我的代码:void datareceived(object sender, SerialDataReceivedEventArgs e) {myDelegate d = new myDelegate(update);listBox1.Invoke(d, new object[] { }); }public void update() {Console.WriteLine(...

c# – 具体来说,编译器如何积极优化生成的字节码?【代码】

我一直在阅读各种编译器的功能,并且我遇到了许多编译器报告执行的“积极优化”一词.例如,LLVM引用了以下编译时优化功能: >内存/指针特定>循环变换>数据流>算术>死代码消除>内联 具体是什么意思?假设您有以下代码片段,如何优化生成的字节代码以比编译器生成的更快地运行?我特别感兴趣的是优化JIT驱动的运行时的字节码,例如C#,Java和Flash.这很棘手,因为JIT只支持处理器通常执行的操作码的子集,这限制了您可以执行的优化量.尽管如...

c# – 将2个连续字节的数组更快地转换为整数【代码】

我有一个“巨大”的数据,可能在50到100兆字节之间变化.我使用filestreamer将这些数据作为字节数组读取. 问题是,我想将所有连续的2个字节转换为整数.我这样做的方法是循环遍历字节数组,步长为2,然后使用BitConvert进行转换:_data[i] = BitConverter.ToInt16(soundData[i : i + 2], 0) // Convert 2 bytes into an int and store at i所以每两个字节变成一个Int16.然而问题是,这太慢了,对于大约50兆字节的文件,这可能需要20秒! 有没...

c# – 将2个数字插入一个字节【代码】

我需要将2位数据插入一个字节. 前3位(0,1,2)包含1到5之间的数字. 最后5位(3,4,5,6,7)包含0到25之间的数字.[编辑:从250改变] 我试过了:byte mybite = (byte)(val1 & val2)但说实话,我真的不知道我在做什么比特操作,虽然我从早期的帖子中读到这些信息有一些帮助,这很棒. 这是我从一个字节读取信息的方式:// Advanced the position of the byte by 3 bits and read the next 5 bitsushort Value1 = Convert.ToUInt16((xxx >> 3) & ...

c# – 为什么KeyValuePair是16个字节?【代码】

KeyValuePair<int, int>: 8 bytes KeyValuePair<long, long>: 16 bytes KeyValuePair<long, int>: 16 bytes (!!) KeyValuePair<int, long>: 16 bytes (!!)我希望后两对只需要8(长)4(int)= 12字节.为什么他们占16? 使用通过ILGenerator发出的动态SizeOf确定大小,如下所述:Size of generic structure解决方法:这是由于data structure Alignment.引用维基百科的文章:Data alignment means putting the data at a memory addre...

c# – TripleDES 16字节不工作

我正在尝试将一些项目从.net framework 4.5迁移到.net核心.尝试迁移旧的加密/解密方法时会出现问题.该方法是TripleDES,其密钥是MD5哈希.MD5哈希总是返回16个字节.这在.net framework 4.5中运行良好,但在System.Security.Cryptography.Algorithms中的.net核心中,TripleDES只接受24字节的KeySize.在4.5中它接受16个字节或24个字节.有没有我可以尝试的变通方法? 稍后编辑:初始化时,TripleDes类调用新的TripleDesImplementation,即th...

c# – 序列化字节数组与XML文件【代码】

我大量使用字节数组来传输对象,原始数据,通过网络和返回.我通过一个类型实现ISerializable来适应java的方法,它包含两个方法,作为接口的一部分,ReadObjectData和WriteObjectData.使用此接口的任何类都会将日期写入字节数组.像那样的东西class SerializationType:ISerializable{void ReadObjectData (/*Type that manages the write/reads into the byte array*/){}void WriteObjectData(/*Type that manages the write/reads into t...

c# – Socket.EndRead 0字节意味着断开连接?【代码】

我想知道在c#中的异步套接字中,在EndRead调用中接收0个字节意味着服务器实际上已经断开了我们的连接吗? 我看到的很多例子都表明情况就是这样,但我收到的断线频率要高得多. 这段代码是否正确?或者endResult< = 0对连接状态没有任何意义? private void socket_EndRead(IAsyncResult asyncResult) { //Get the socket from the result stateSocket socket = asyncResult.AsyncState as Socket;//End the readint endResult = Socke...

将C#代码迁移到Java,无符号短和字节数组转换【代码】

我正在用Java编写一段代码(我对Java很新),我之前用C#编写过.这是C#中的代码和示例.ushort number = 0xAABB; // 43707 byte[] data = new byte[2]; EndianBitConverter.Big.CopyBytes(number, data, 0); // value[0] = 170, value[1] = 187我在.NET中使用自定义位转义器,因为它默认为小端.无论如何,根据我对java的理解,如果我想使用与byte []相同的结果,我应该期望我的值(170和187)小于128(Byte.MAX_VALUE 1),即(42,59) – 由于.net...

c# – 来自MemoryStream的GZipStream只返回几百个字节【代码】

我正在尝试下载几百MB的.gz文件,并将其转换为C#中的一个非常长的字符串.using (var memstream = new MemoryStream(new WebClient().DownloadData(url))) using (GZipStream gs = new GZipStream(memstream, CompressionMode.Decompress)) using (var outmemstream = new MemoryStream()) {gs.CopyTo(outmemstream);string t = Encoding.UTF8.GetString(outmemstream.ToArray());Console.WriteLine(t); }我的测试网址:https://comm...

c# – 为我的AES方法创建一个字节数组的字符数是多少?【代码】

我在这里使用AES方法:http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx 我想要一个字符串值,我将转换为字节数组并将其传递给AES加密方法.字符串应该有多少个字符来生成方法所需的正确字节数组大小?static byte[] encryptStringToBytes_AES(string plainText, byte[] Key, byte[] IV){// Check arguments.if (plainText == null || plainText.Length <= 0)throw new ArgumentNullExce...

如何在C#中向串行设备发送字节?【代码】

我有一个使用串行(通过USB适配器)与我的PC连接的设备.我真的很难让它在C#中很好地发挥.我知道它工作正常,因为供应商提供的软件表现得如预期的那样.我也知道我能够使用我的代码接收数据,这要归功于一个重复发送“OK”的测试模式. 这是我的代码:private SerialPort port;public SerialConnection(){this.port = new SerialPort("COM3", 38400, Parity.None, 8, StopBits.One);this.port.WriteTimeout = 2000; port.ReadTimeout = 20...

c# – 如何从字节数组中删除BOM【代码】

我在byte [] byteArray中有xml数据,可能包含也可能不包含BOM. C#中是否有任何标准方法可以从中删除BOM?如果没有,那么处理包括所有类型编码在内的所有情况的最佳方法是什么呢? 实际上,我正在修复代码中的错误,我不想更改大部分代码.所以如果有人能给我删除BOM的代码会更好. 我知道我可以找到60这是’<的ASCII值并在此之前忽略字节但我不想这样做.解决方法:所有C#XML解析器都会自动为您处理BOM.我建议使用XDocument – 在我看来它...

c# – 如何将MultipartMemoryStreamProvider的文件内容作为字节数组获取?【代码】

我创建了一个使用FormData将文件上传到Web API控制器的组件. 如何从MultipartMemoryStreamProvider获取文件内容作为字节数组? 这是Web Api方法public Task<IEnumerable<FileModel>> Post(){ if (Request.Content.IsMimeMultipartContent()){ var streamProvider = new MultipartMemoryStreamProvider();var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileMo...