千家信息网

C#预定义的基础类型如何转换

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了C#预定义的基础类型如何转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#预定义的基础类型如何转换文章都会有所收获,下面我们一起来看看吧。一、Bit
千家信息网最后更新 2026年11月01日C#预定义的基础类型如何转换

这篇文章主要介绍了C#预定义的基础类型如何转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#预定义的基础类型如何转换文章都会有所收获,下面我们一起来看看吧。

一、BitConverter 将预定义的基础类型与字节数据进行互转(Unicode)

1、将值类型转成字节数组(Unicode):BitConverter.GetBytes()

byte[] data = BitConverter.GetBytes('哈');Console.Write(data);//200,84 (两个字节)Console.Write(BitConverter.GetBytes('1'));//49,0 (两个字节)Console.Write(BitConverter.GetBytes(258));//2,1,0,0  (整数,32位,四个字节)Console.Write(BitConverter.GetBytes(1.2));//8个元素 (八个字节)Console.Write(BitConverter.GetBytes(true));//1 (一个字节)

2、将字节数组转成值类型:BitConverter.ToXXX()

char str = BitConverter.ToChar(new byte[] { 200, 84 }, 0);Console.Write(str);//哈short sho = BitConverter.ToInt16(new byte[] { 69, 0 }, 0);Console.Write(sho.ToString());//69

3、将字节数组中每个元素值转成十六进制表示:BitConverter.ToString(byte[])

string strHex = BitConverter.ToString(new byte[] { 09, 45, 65, 0, 0 });Console.Write(strHex);//09-2D-41-00-00string strHex = BitConverter.ToString(new byte[] { 69, 0, 0, 0, 0 });Console.Write(strHex);//45-00-00-00-00

注意:跟BitConverter.IsLittleEndian属性有关,true表示最大的有效字节位于单词的右端。

4、举例说明:

整数

对应的十六进制数
(Convert.ToString(**, 16) )

转成字节数组byte[]
BitConverter.GetBytes(**)

字节数据每个字节对应的十六进制表示
BitConverter.ToString(**)

11:0x01 (两位两位地对齐)[1,0,0,0]01- 00- 00 -00
6554010004:0x1 00 04 (两位两位地对齐)[4,0,1,0]04- 00- 01 -00
9999999993B9AC9FF:0x3B9AC9FF (两位两位地对齐)[255,201,154,59]FF -C9- 9A -3B

二、字符与ASCII码转化:

一个ASCII码占一个字节,其中一个为检验位。共27=128个字符,只适合所有的拉丁字母。

1、字符转成ASCII码:

Console.Write(Convert.ToByte('a'));//97Console.Write((int)'a');//97,强制转换Console.Write(Convert.ToByte('1'));//49Console.Write((int)'1');//49

2、ASCII码转成字符:

Convert.ToChar(97)=>'d';  (char)97='a' --强制转换:

注意:C#中的Char字符类型为Unicode类型,每个字符占2个字节。

三、字符串与十六进制表示的字节数组之间的转换

void Main() {     Console.WriteLine(StrToHex("哈啊a的1我z!"));     Console.WriteLine(HexToStr("B9 FE B0 A1 61 B5 C4 31 CE D2 7A 21")); }//字符串转换成十六进制字符串public string StrToHex(string mStr) {     return BitConverter.ToString(ASCIIEncoding.Default.GetBytes(mStr)).Replace("-", " "); } // 十六进制字符串转换成字符串public string HexToStr(string mHex) {     mHex = mHex.Replace(" ", "");     if (mHex.Length <= 0) return "";     byte[] vBytes = new byte[mHex.Length / 2];     for (int i = 0; i < mHex.Length; i += 2)         if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2]))             vBytes[i / 2] = 0;     return ASCIIEncoding.Default.GetString(vBytes); }

四、BitArray类

BitArray类用来处理位集合。位集合是可以用来有效表示Boolean值的集合。注意:表示True/False的集合,不是0、1集合。

如:对常规数的二进制的显示或存储:

0 0 0 0 0 0 0 1

而对于在BitArray里的存储,它是如下格式:

True False False False False False False False

它的顺序是相反的,而且用布尔值很难便捷读懂,但实际上,我们应当把数值当作1和0这样直观的显示出来,并且顺序也要进行处理!

解决方法:BitArray里显示的格式是逆序的,并且每一位都用布尔值显示,我们无法改变BitArray类所用的内部代码,但我们可以编写外部代码,使它能够更加友好的便于理解的常规的方式显示出来。

属性

  • Count 获取 BitArray 中包含的元素个数。

  • IsReadOnly 获取一个值,表示 BitArray 是否只读。

  • Item 获取或设置 BitArray 中指定位置的位的值。

  • Length 获取或设置 BitArray 中的元素个数。

方法

  • BitArray And( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。

  • bool Get( int index ); 获取 BitArray 中指定位置的位的值。

  • BitArray Not();把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。

  • BitArray Or( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。

  • void Set( int index, bool value ); 把 BitArray 中指定位置的位设置为指定的值。

  • void SetAll( bool value ); 把 BitArray 中的所有位设置为指定的值。

  • BitArray Xor( BitArray value ); 对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位异或操作。

  • CopyTo(Array, Int32) 从目标数组的指定索引处开始将整个 BitArray 复制到兼容的一维 Array。

举例:

下面创建一个字节数组,里面包含5个byte。

int bits;string[] binNumber = new string[8];//int binary;byte[] ByteSet = new byte[] { 1, 2, 3, 4, 5 };//定义一个字节型数组,存5个字节型数值:1,2,3,4,5,6BitArray BitSet = new BitArray(ByteSet);//这里一定要注意,这里的每一个字节型数值是以位的形式、每一位用Boolean值、逆序存储在BitArray(1字节对应8位)bits = 0;//bits是计数器,到8了就又归为初始值0;为的是方便知道操作完了一个字节型数值(1字节正好占8位)binary = 7;//binary是二进制数组下标索引;初始值为7,这是因为BitArray里存储的数据和常规二进制数据的顺序是相反的Console.WriteLine("BitSet里包含的元素数" + BitSet.Count);//40,因为数据在BitArray里是以位的形式存储的,5个字节型数值,一个字节占8位,所以共占40位!!!不是5!!!for (int i = 0; i <= BitSet.Count - 1; i++)//遍历40个位,每个位存boolean值True/False{    Console.WriteLine("BitSet.Get(" + i + ")" + BitSet.Get(i));    if (BitSet.Get(i) == true)        binNumber[binary] = "1";//如果该位存储的true值,则转成1;    else        binNumber[binary] = "0";//如果该位存储的false值,则转成0;    bits++;      //计数+1    binary--;    //eg.第8位(下标7)存好,则将下标向左移1位存下一轮将位布尔值转成的二进制0/1    if ((bits % 8) == 0)//当计数器为8时,表示一个字节型的数值已经表示完全了    {        binary = 7;//将存储字节型数值的二进制形式的String型数组的下标归初始        bits = 0;        for (int j = 0; j <= 7; j++)            Console.Write(binNumber[j]);        Console.WriteLine();    }}

结果:

取整型数组来试一试,整型数组是4字节,32位

int bits = 0;int index = 31;string[] s = new string[32];int[] a = new int[] { 2, 3, 2, 7, 2147483647 };BitArray BA = new BitArray(a);Console.WriteLine("BA的大小:" + BA.Count);  //5*4*8=160for (int i = 0; i < BA.Count; i++){    Boolean b = BA.Get(i);    if (b == true)        s[index] = "1";    else        s[index] = "0";    bits++;    index--;    if (bits % 32 == 0) //每隔一个数字(4*8)换行    {        bits = 0;        index = 31;        for (int j = 0; j <= 31; j++)            Console.Write(s[j]);        Console.WriteLine();    }}

结果:

关于"C#预定义的基础类型如何转换"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C#预定义的基础类型如何转换"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

字节 元素 数组 字符 类型 存储 数值 十六进制 基础 C# 二进制 字符串 数据 下标 中指 位置 布尔 常规 形式 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 广州淘业互联网络科技 为想互联网科技怎么样 互联网科技工作委员会毛军 互联网电商科技 华宇互联网科技 广州善班互联网科技 互联网高科技股票 上海卓越科技 互联网 互联网科技公司名称 中盈科技互联网信息有限公司 中国科技互联网公司收入 温州喔噻互联网科技有限公司 移动互联网科技股 明优互联网科技有限公司 智帮互联网科技公司最近动向 下一代互联网重大应用科技园 互联网金融运营模式中的金融科技 美国五大互联网科技公司市值多少 现代互联网科技公司 汇久创客互联网科技 上海万想互联网科技 互联网科技博客 安控科技rtu产品工业互联网 西藏七维空间互联网科技有限公司 青岛科技大学互联网大赛研究生 阿大互联网科技有限公司 健康食品互联网创新科技园项目 中国互联网有什么科技 互联网相关科技技术
0