Tag: bytearray

如何跟踪乱序的单个对象,然后连续加入()连续的对象?

我首先要说的是比一起盲目加入byte[]要困难一些。 我的主要目标是优化当前将许多512字节页面上传到Web服务器(Azure页面Blob)的应用程序,并将其减少为4Megs或更少的单个大型上载。 有关原因的更多背景信息,请参阅此问题底部的链接。 简要回答原因:通过使用Azure稀疏文件,此优化将提高速度(更少的IO)并节省长期资金 现在详细说明: 该课程需要 接受数据并存储它(数据定义为alignment start , alignment stop和随附的有效负载。 在N个数据到达或发生event , ProcessData() 。 这意味着是时候根据边界组装数据了( blob1的停止值必须与blob1对齐) 连续数据实际上可能无序到达。 非连续数据定义为在调用processData()之前调用应用程序未发送它时。 此外,如果整个512字节范围==零,那么它将获得特殊处理,并被视为非连续。 我们正在处理byte []的类型,因此这里有效的列表可能很复杂。 我想避免不必要的副本和数组的扩展。 合理? (像泥,我希望不是) 到目前为止我最接近的是编写方法签名:(我知道很蹩脚) // This can’t be bigger than 4Mb, or smaller than 512 byte[] BigBlobToUpload = new byte[]; /// /// Collects consecutive data ranges that will be uploaded /// /// The […]

如何将1D字节数组转换为包含位图的2D字节数组?

我已经使用了LockBits和UnlockBits函数,并将Image的字节数组转换为1D数组。 (仅考虑黑白/二值化图像) 有没有办法将它带到2Darrays(图像高度和宽度的大小)? 所以我可以将数组转换为“.txt”文件并查看它? 我用来将图像转换为1D数组的代码如下: Public void function(Bitmap image){ { byte[] arr1D; byte[] arr2D; BitmapData data = image.LockBits(new Rectangle(0, 0, img_w, img_h), ImageLockMode.ReadOnly, image.PixelFormat); try { IntPtr ptr = data.Scan0; int bytes = Math.Abs(data.Stride) * image.Height; byte[] rgbValues = new byte[bytes]; arr1D = rgbValues; Marshal.Copy(ptr, rgbValues, 0, bytes); } finally { image.UnlockBits(data); } } 由于图像是二进制的,因此字节数组的值仅为255和0。 […]

C#读取字节数组

好的,所以我正在构建服务器客户端应用程序。 基本上,服务器接收包含头[2bytes],cryptokeys [2bytes]和数据的数据包 我正在考虑构建类来将整个数据包(byte [])加载到其中,然后使用内部类方法处理数据包。 现在回答这个问题。 什么是最好的方法? 我需要能够读取Int16 Int32 String(int lenght)并且可能浮动 编辑:有点像二进制读取器,但作为输入的byte []

C# – 我可以使用数组初始化器来构建另一个字节数组吗?

我想使用数组初始化程序从另一个字节数组中构建一个字节数组,以及构成标题/尾部的其他一些字节。 基本上,我想做这样的事情: byte[] DecorateByteArray(byte[] payload) { return new byte[] { 0, 1, 2, payload.GetBytes(), 3, 4, 5}; } 不幸的是,上面的GetBytes()是虚构的。 有没有好的/优雅的方式来做到这一点? 我通过使用BinaryWriter将所有内容写入MemoryStream ,然后使用MemoryStream.ToArray()将其转换为字节数组来解决这个问题,但它感觉有点笨重。

将IP转换为字节/转换回字符串

我将SQLVERVER 2008数据库上的IPV4地址存储为二进制(4)。 所以,我在数据输入之前转换了这些值(并且由于公司的限制,我不能在数据库中创建函数,这不是讨论的问题)。 public static byte[] IpToBin(string ip) { return IPAddress.Parse(ip).GetAddressBytes(); } public static string HexToIp(string ip) { return new IPAddress(long.Parse(ip, NumberStyles.HexNumber)).ToString(); } 调用IpToBin后,生成的数据为(例如0x59FC09F3)。 当我调用HexToIp时,ip反转可能是由于很少/大端转换。 任何人都可以提出一个没有500亿行代码的体面解决方案吗?

如何将字节数组转换为UInt32数组?

让我们说在C ++中我得到了这样的代码.. void * target uint32 * decPacket = (uint32 *)target; 所以在C#中就像… byte[] target; UInt32[] decPacket = (UInt32[])target; 无法将byte []转换为uint [] 我如何将C ++对数组的内存对齐转换为C#?

我可以从Silverlight中的BitmapImage获取byte 吗?

我试图在Silverlight和WCF服务之间来回传递一些图像。 如果可能的话,我想传递一个System.Windows.Media.Imaging.BitmapImage ,因为这意味着客户端不必进行任何转换。 但是,在某些时候我需要将此图像存储在数据库中,这意味着图像表示必须能够转换为byte[]和从byte[]转换。 我可以通过将数组读入MemoryStream并使用BitmapImage.SetSource()从byte[]创建BitmapImage 。 但我似乎无法找到另一种方式转换 – 从BitmapImage到byte[] 。 我错过了一些明显的东西吗? 如果它有帮助,转换代码可以在服务器上运行,即它不需要是Silverlight安全的。

Java和C# – 字节数组到长转换差异

这对我来说很奇怪:当我在Java中运行时 byte[] data = new byte[] { 50, -106, 40, -22, -94, -119, -52, 8 }; ByteBuffer bb = ByteBuffer.wrap( data ); System.out.println( bb.getLong() ); 结果是3645145936617393160 当我在C#中运行时 //unsigned values (signed&0xff) byte[] bytes = new byte[] { 50, 150, 40, 234, 162, 137, 204, 8 }; long l = BitConverter.ToInt64(bytes, 0); System.Console.Write(String.Format(“{0}\n”, l)); System.Console.ReadKey(); 结果是634032980358633010 你能帮我理解一下吗? […]

在C#中获取整数的上下字节并将其作为char数组发送到com端口,如何?

CI会这样做 int number = 3510; char upper = number >> 8; char lower = number && 8; SendByte(上部); SendByte(低级); 上下都是= 54 在C#中我这样做: int number = Convert.ToInt16(“3510”); byte upper = byte(number >> 8); byte lower = byte(number & 8); char upperc = Convert.ToChar(upper); char lowerc = Convert.ToChar(lower); data = “GETDM” + upperc + lowerc; comport.Write(data); 但是在调试器编号= […]

c#从资源中读取字节数组

我一直在试图弄清楚如何从我的一个资源文件中读取一个字节数组,我已经尝试过最流行的点击谷歌而没有取得明显的成功。 我有一个存储在我的程序的资源集合中的文件,我想将此文件作为字节数组读取 我目前只是使用以下代码从我的程序的根目录中读取文件: FileStream fs = new FileStream(Path, FileMode.Open); BinaryReader br = new BinaryReader(fs); byte[] bin = br.ReadBytes(Convert.ToInt32(fs.Length)); fs.Close(); br.Close(); 但是我想将此文件存储为我的应用程序中的资源,这样我就不必为我的程序发送额外的文件。 此文件包含我程序部分使用的加密数据。 任何帮助或指针将不胜感激!