//http://isotopescreencapture.codeplex.com/ //The MIT License (MIT) namespace Isotope.Collections { public static class BitArrayUtil { public static byte[] BitArrayToBytes(System.Collections.BitArray bitarray) { if (bitarray.Length == 0) { throw new System.ArgumentException("must have at least length 1", "bitarray"); } int num_bytes = bitarray.Length / 8; if (bitarray.Length % 8 != 0) { num_bytes += 1; } var bytes = new byte[num_bytes]; bitarray.CopyTo(bytes, 0); return bytes; } } }
Reinitializes a byte array to the given value in an optimized way: byteArraySet
/*
* CVS identifier:
*
* $Id: ArrayUtil.java,v 1.10 2000/09/05 09:25:15 grosbois Exp $
*
* Class: ArrayUtil
*
* Description: Utillities for arrays.
*
*
*
* COPYRIGHT:
*
* This software module was originally developed by Raphaël Grosbois and
* Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel
* Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David
* Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research
* Centre France S.A) in the course of development of the JPEG2000
* standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This
* software module is an implementation of a part of the JPEG 2000
* Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio
* Systems AB and Canon Research Centre France S.A (collectively JJ2000
* Partners) agree not to assert against ISO/IEC and users of the JPEG
* 2000 Standard (Users) any of their rights under the copyright, not
* including other intellectual property rights, for this software module
* with respect to the usage by ISO/IEC and Users of this software module
* or modifications thereof for use in hardware or software products
* claiming conformance to the JPEG 2000 Standard. Those intending to use
* this software module in hardware or software products are advised that
* their use may infringe existing patents. The original developers of
* this software module, JJ2000 Partners and ISO/IEC assume no liability
* for use of this software module or modifications thereof. No license
* or right to this software module is granted for non JPEG 2000 Standard
* conforming products. JJ2000 Partners have full right to use this
* software module for his/her own purpose, assign or donate this
* software module to any third party and to inhibit third parties from
* using this software module for non JPEG 2000 Standard conforming
* products. This copyright notice must be included in all copies or
* derivative works of this software module.
*
* Copyright (c) 1999/2000 JJ2000 Partners.
*
*
*
*/
using System;
namespace CSJ2K.j2k.util
{
///
///
///
public class ArrayUtil
{
///
/// arrays are copyied in a n optimized way.
///
public const int MAX_EL_COPYING = 8;
///
public const int INIT_EL_COPYING = 4;
///
/// the length of the array is less than MAX_EL_COPYING, then the array
/// is set element by element in the normal way, otherwise the first
/// INIT_EL_COPYING elements are set element by element and then
/// System.arraycopy is used to set the other parts of the array.
///
///
/// The array to set.
///
///
/// The value to set the array to.
///
///
///
///
public static void byteArraySet(byte[] arr, byte val)
{
int i, len, len2;
len = arr.Length;
// Set array to 'val' in an optimized way
if (len < MAX_EL_COPYING)
{
// Not worth doing optimized way
for (i = len - 1; i >= 0; i–)
{
// Set elements
arr[i] = val;
}
}
else
{
// Do in optimized way
len2 = len >> 1;
for (i = 0; i < INIT_EL_COPYING; i++)
{
// Set first elements
arr[i] = val;
}
for (; i <= len2; i <<= 1)
{
// Copy values doubling size each time
Array.Copy(arr, 0, arr, i, i);
}
if (i < len)
{
// Copy values to end
Array.Copy(arr, 0, arr, i, len - i);
}
}
}
}
}
[/csharp]
Save Byte Array To File
/////////////////////////////////////////////////////////////////////////////////////////////// // // This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler // // Copyright (c) 2005-2008, Jim Heising // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation and/or // other materials provided with the distribution. // // * Neither the name of Jim Heising nor the names of its contributors may be // used to endorse or promote products derived from this software without specific prior // written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Windows.Forms; namespace WOSI.Utilities { public class FileUtils { public static void SaveBytesToFile(string filename, byte[] bytesToWrite) { if (filename != null && filename.Length > 0 && bytesToWrite != null) { if (!Directory.Exists(Path.GetDirectoryName(filename))) Directory.CreateDirectory(Path.GetDirectoryName(filename)); FileStream file = File.Create(filename); file.Write(bytesToWrite, 0, bytesToWrite.Length); file.Close(); } } } }
Read Stream to Byte array
/////////////////////////////////////////////////////////////////////////////////////////////// // // This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler // // Copyright (c) 2005-2008, Jim Heising // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation and/or // other materials provided with the distribution. // // * Neither the name of Jim Heising nor the names of its contributors may be // used to endorse or promote products derived from this software without specific prior // written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Windows.Forms; namespace WOSI.Utilities { public class FileUtils { public static byte[] GetStreamBytes(Stream stream) { try { stream.Position = 0; } catch { } byte[] readBuffer = new byte[1024]; List<byte> outputBytes = new List<byte>(); int offset = 0; while (true) { int bytesRead = stream.Read(readBuffer, 0, readBuffer.Length); if (bytesRead == 0) { break; } else if (bytesRead == readBuffer.Length) { outputBytes.AddRange(readBuffer); } else { byte[] tempBuf = new byte[bytesRead]; Array.Copy(readBuffer, tempBuf, bytesRead); outputBytes.AddRange(tempBuf); break; } offset += bytesRead; } return outputBytes.ToArray(); } } }
Read byte array from file
/////////////////////////////////////////////////////////////////////////////////////////////// // // This File is Part of the CallButler Open Source PBX (http://www.codeplex.com/callbutler // // Copyright (c) 2005-2008, Jim Heising // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation and/or // other materials provided with the distribution. // // * Neither the name of Jim Heising nor the names of its contributors may be // used to endorse or promote products derived from this software without specific prior // written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Windows.Forms; namespace WOSI.Utilities { public class FileUtils { public static byte[] GetFileBytes(string filename) { if (File.Exists(filename)) { FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read); byte[] fileBytes = new byte[fs.Length]; fs.Read(fileBytes, 0, (int)fs.Length); fs.Close(); return fileBytes; } return null; } } }
Write a byte array to a file
//http://tinyerp.codeplex.com/ //GNU Library General Public License (LGPL) //----------------------------------------------------------------------- // <copyright file="SysUtil.cs" company="Pyramid Consulting"> // Copyright (c) Pyramid Consulting. All rights reserved. // </copyright> //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; namespace Bamboo.Core.Common { public class SysUtil { /// <summary> /// write a byte array to a file /// </summary> /// <param name="strFilePath">dest file path</param> /// <param name="bContent">content to write</param> /// <returns>return 0 on succeed,otherwise throw a exception</returns> public static int WriteFile(String strFilePath, byte[] bContent) { System.IO.FileStream fs = new System.IO.FileStream(strFilePath, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs); try { bw.Write(bContent); } finally { bw.Close(); fs.Close(); } return 0; } } }
Get the byte array from a string using default encoding
//http://tinyerp.codeplex.com/ //GNU Library General Public License (LGPL) //----------------------------------------------------------------------- // <copyright file="SysUtil.cs" company="Pyramid Consulting"> // Copyright (c) Pyramid Consulting. All rights reserved. // </copyright> //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; namespace Bamboo.Core.Common { public class SysUtil { /// <summary> /// get the byte array from a string using default encoding /// </summary> /// <param name="strData">source string</param> /// <returns>converted array</returns> public static byte[] StringToBytes(String strData) { return System.Text.Encoding.GetEncoding(0).GetBytes(strData); } } }