字节数组与二进制、十六进制相互转换
2012-05-22 10:27
169 查看
常用的一些转换方法,整理如下,在编程中,用得比较多的是十进制跟十六进制,二进制跟八进制用的很少。
namespaceJerry.Framework.Socket.Common { publicclassUtility { ///<summary> ///将指定进制的字符串转换到指定进制的字符串 ///</summary> ///<paramname="value">要转换的字符串</param> ///<paramname="fromBase">value中数字的基数,它必须是2、8、10或16。</param> ///<paramname="toBase">value中数字的基数,它必须是2、8、10或16。</param> ///<returns></returns> publicstaticstringToString(stringvalue,intfromBase,inttoBase) { returnConvert.ToString(Convert.ToInt32(value,fromBase),toBase); } ///<summary> ///将字节数组节转换成指定进制的字符串 ///</summary> ///<paramname="byteArray">要转换的字符串</param> ///<paramname="toBase">它必须是2或16</param> ///<returns></returns> publicstaticstringToString(byte[]byteArray,inttoBase=16) { if(byteArray==null||byteArray.Length==0) returnstring.Empty; switch(toBase) { case2: returnByteArrayToBinaryString(byteArray); case16: returnByteArrayToHexStr(byteArray); default: returnstring.Empty; } } ///<summary> ///将指定进制的字符串转换成字节数组 ///</summary> ///<paramname="value"></param> ///<paramname="fromBase"></param> ///<returns></returns> publicstaticbyte[]ToByteArray(stringvalue,intfromBase=16) { if(string.IsNullOrEmpty(value)) returnnull; switch(fromBase) { case2: returnBinaryStringToByteArray(value); case16: returnHexStrToByteArray(value); default: returnnull; } } ///<summary> ///字节数组节转换成二进制字符串 ///</summary> ///<paramname="b">要转换的字节数组</param> ///<returns></returns> privatestaticstringByteArrayToBinaryString(byte[]byteArray) { intcapacity=byteArray.Length*8; StringBuildersb=newStringBuilder(capacity); for(inti=0;i<byteArray.Length;i++) { sb.Append(byte2BinString(byteArray[i])); } returnsb.ToString(); } privatestaticstringbyte2BinString(byteb) { returnConvert.ToString(b,2).PadLeft(8,'0'); } ///<summary> ///二进制字符串转换成字节数组 ///</summary> ///<paramname="binaryString">要转换的字符,如"0000000011111111"</param> ///<returns></returns> privatestaticbyte[]BinaryStringToByteArray(stringbinaryString) { binaryString=binaryString.Replace("",""); if((binaryString.Length%8)!=0) thrownewArgumentException("二进制字符串长度不对"); byte[]buffer=newbyte[binaryString.Length/8]; for(inti=0;i<buffer.Length;i++) { buffer[i]=Convert.ToByte(binaryString.Substring(i*8,8).Trim(),2); } returnbuffer; } ///<summary> ///字节数组转换成十六进制字符串 ///</summary> ///<paramname="bytes">要转换的字节数组</param> ///<returns></returns> privatestaticstringByteArrayToHexStr(byte[]byteArray) { intcapacity=byteArray.Length*2; StringBuildersb=newStringBuilder(capacity); if(byteArray!=null) { for(inti=0;i<byteArray.Length;i++) { sb.Append(byteArray[i].ToString("X2")); } } returnsb.ToString(); } ///<summary> ///十六进制字符串转换成字节数组 ///</summary> ///<paramname="hexString">要转换的字符串</param> ///<returns></returns> privatestaticbyte[]HexStrToByteArray(stringhexString) { hexString=hexString.Replace("",""); if((hexString.Length%2)!=0) thrownewArgumentException("十六进制字符串长度不对"); byte[]buffer=newbyte[hexString.Length/2]; for(inti=0;i<buffer.Length;i++) { buffer[i]=Convert.ToByte(hexString.Substring(i*2,2).Trim(),0x10); } returnbuffer; } } }
相关文章推荐
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- C# 图片与字节数组(byte[])二进制相互转换,获取大小像素扩展名
- ASCII、十六进制、字节数组、字符数组相互转换
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- JavaScript十六进制字符串和字节数组相互转换
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- JavaScript十六进制字符串和字节数组相互转换
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- JavaScript十六进制字符串和字节数组相互转换
- 在C#语言中十六进制字符串与字节型数组的相互转换
- 进制转换(二进制、八进制、十进制与十六进制之间的相互转换)
- C++实现二进制、八进制、十进制、十六进制的相互转换
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- java中byte数组与十六进制字符串相互转换
- MSDN将字节数组转换为十六进制值字符串时 Byte 的用法
- iOS-二进制,十进制,十六进制的相互转换
- Android字节、十进制、十六进制、字符串之间的相互转换
- 二进制,八进制,十六进制,十进制间进行相互转换