广告
返回顶部
首页 > 资讯 > 精选 >C#预定义的基础类型如何转换
  • 802
分享到

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

2023-06-30 12:06:42 802人浏览 安东尼
摘要

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

这篇文章主要介绍了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();    }}

结果:

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

取整型数组来试一试,整型数组是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#预定义的基础类型如何转换”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#预定义的基础类型如何转换

本文链接: https://www.lsjlt.com/news/328721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#预定义的基础类型转换
    一、BitConverter 将预定义的基础类型与字节数据进行互转(Unicode) 1、将值类型转成字节数组(Unicode):BitConverter.GetBytes() by...
    99+
    2022-11-13
  • C#预定义的基础类型如何转换
    这篇文章主要介绍了C#预定义的基础类型如何转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#预定义的基础类型如何转换文章都会有所收获,下面我们一起来看看吧。一、BitConverter 将预定义的基础类型与...
    99+
    2023-06-30
  • C#使用BitConverter与BitArray类进行预定义基础类型转换
    一、BitConverter 将预定义的基础类型与字节数据进行互转(Unicode) 1、将值类型转成字节数组(Unicode):BitConverter.GetBytes() by...
    99+
    2022-11-13
  • 详解C语言基础的类型转换
    目录类型转换隐式类型转换强制类型转换总结 类型转换 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。转换包括隐式类型转换和强制类型转换。 类型转换的原则:...
    99+
    2022-11-12
  • C语言基础的类型转换有哪些
    小编给大家分享一下C语言基础的类型转换有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类型转换数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。转换包括隐式类型转换和强制类型转换。类型转换的原则...
    99+
    2023-06-25
  • C#类型转换之自定义隐式转换和显式转换
    目录前言基础知识示例代码实际应用问题答案报错其他应用和设计读音前言 有时我们会遇到这么一种情况:在json数据里,数组里的数据类型不一致,导致我们不能直接反序列化为目标类型。最终我们...
    99+
    2022-11-13
  • C语言基础隐式类型转换与强制类型转换示例解析
    目录类型转换隐式类型转换强制类型转换类型转换 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换包括隐式类型转换和强制类型转换。 类型转换的原则:占用内...
    99+
    2022-11-12
  • C语言编程基础char类型转换示例
    代码 如下所示: #inlcude <stdio.h> void func1(void) { char a = 0x7F; unsigned ...
    99+
    2022-11-13
  • C#中的预定义类型与引用类型
    一、预定义的值类型 一个字节(1Byte)=8位(8Bit) BitArarry类可以管理位Bit。 1、整型 所有的整形变量都能用十进制或十六进制表示:long a=0x...
    99+
    2022-11-13
  • C#中怎么自定义类型转换函数
    C#中怎么自定义类型转换函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。/// <summary>  /// 将字符型...
    99+
    2023-06-18
  • 怎么在C++中定义RTTI的类型进行转换
    这篇文章给大家介绍怎么在C++中定义RTTI的类型进行转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言RTTI 是 Run Time Type Information 的缩写,从字面上来理解就是执行时期的类型信息...
    99+
    2023-06-07
  • C#中的预定义类型与引用类型是什么
    今天小编给大家分享一下C#中的预定义类型与引用类型是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、预定义的值类型一个...
    99+
    2023-06-30
  • 如何使用JPA自定义VO类型转换
    这篇文章主要介绍如何使用JPA自定义VO类型转换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JPA自定义VO类型转换(EntityUtils工具类)在JPA查询中,如果需要返回自定义的类,可以使用EntityUti...
    99+
    2023-06-25
  • javascript基础数据类型转换的示例分析
    这篇文章给大家分享的是有关javascript基础数据类型转换的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数值型转换为字符串类型方式说明案例toString()转成字符串var num =1; ale...
    99+
    2023-06-29
  • C++如何强制类型转换
    小编给大家分享一下C++如何强制类型转换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、C强制转换C语言中的强制转换主要用于普通数据类型、指针的强制转换,没有类...
    99+
    2023-06-25
  • Java中的BaseTypeHandler自定义类型转换器如何使用
    这篇文章主要介绍“Java中的BaseTypeHandler自定义类型转换器如何使用”,在日常操作中,相信很多人在Java中的BaseTypeHandler自定义类型转换器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-30
  • 如何使用mybatis自定义日期类型转换器
    本篇内容主要讲解“如何使用mybatis自定义日期类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用mybatis自定义日期类型转换器”吧!前言使用mybatis中的typeHan...
    99+
    2023-06-29
  • C++中如何强制类型转换
    C++中如何强制类型转换,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为:...
    99+
    2023-06-20
  • Python 变量的定义和数据类型的转换
    变量 变量的定义 基本语法:变量名 = 值 变量名是给对象贴一个用于访问的标签,给对象绑定名字的过程也称为赋值,赋值符号 “=” 变量名自定义,要满足标识符命名规则。 Python中,不需要事先...
    99+
    2023-09-15
    python 变量 数据类型
  • 如何定义C++中的C++数据类型
    这篇文章给大家介绍如何定义C++中的C++数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。着重介绍C++数据类型,C++中的C++数据类型定义编译器在内存中存放信息的方式,在不同的开发环境中,可以向变量赋予任何数...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作