当前位置:首页 > Windows程序 > 正文

c#中各种进制之间转换

2021-03-26 Windows程序

1、int转十六进制:

int i = 16; Console.WriteLine(i.ToString("x"));//十六进制 Console.WriteLine(i.ToString("d"));//十进制

2、Byte数组中的数据转十六进制

1. 字节数组转为 整型,需要调用 BitConvert的 ToInt方法

2. 调用Convert.ToString(整型,进制数) 来转换为想要的进制数

3. 一个小示例如下:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 {     class Program     {         static void Main(string[] args)         {             byte[] bytes = { 10, 12, 14, 16 };             int int32 = BitConverter.ToInt32(bytes, 0);             string hexStr = "0x" + Convert.ToString(int32, 16);             Console.WriteLine(hexStr);             Console.Read();         }     } }

3、string字符串和Byte数组相互转换

C# code   //String To Byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); //Byte[] To String: string str = System.Text.Encoding.Default.GetString(byteArray);  

其实,在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,,从一个byte[]转成一个char[],等等,可以参考MSDN。

另外,还有其它编码方式的,如System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。

另外一种方法是如下:

名称 说明
BitConverter.ToString()   出现运行时错误时,发生此事件  
BitConverter.ToString(Byte[])   返回由字节数组的元素转换来的 String  
BitConverter.ToString(Byte[], Int32)   返回由字节数组中从指定数组位置开始的元素转换来的 String  
BitConverter.ToString(Byte[], Int32, Int32)   返回由字节数组中指定位置、指定数量的字节转换来的 String  
BitConverter.ToString(Byte[])   这个方法不行,得到的是byte数组的16进制字符串, 如"AH-0A-1A"  

--引用-------------------------------------------------- 
如果是未知编码方式呢? 
比如用FileStream从一个文件中读取了流到byte[]中,这时候并不知道这个文件的编码方式是gb2312还是utf-8,如何才能正确的取到string值? 
-------------------------------------------------------- 
你可以试试这种解决方案: 

StreamReader sr = new StreamReader(new MemoryStream(byteArray)); string str = sr.ReadToEnd();  

//TODO:待补充

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68018.html