在C#中,char代表一个Unicode的字符,占用的内存不是一个byte。而byte还是一个字节。

那么在char和byte之间copy操作时,可能结果不是我们想要的。
示例:

static void Main(string[] args){byte[] bytes = { 0x31,0x32,0x33,0x34};      // char[] chars1 = new char[4];char[] chars2 = new char[4];//System.Buffer.BlockCopy(bytes,0,chars1,0,4);for (int i = 0; i<4; i++){chars2[i] = (char)bytes[i];}string str1 = new string(chars1);   // string str2 = new string(chars2);   // 1234System.Console.Read();}

执行时的内存情况:

using System.Globalization;
using System.Runtime;
using System.Runtime.InteropServices;namespace System
{//// 摘要://     将字符表示为 UTF-16 代码单位。[ComVisible(true)]public struct Char : IComparable, IConvertible, IComparable<Char>, IEquatable<Char>{//// 摘要://     表示 System.Char 的最大可能值。此字段为常数。public const Char MaxValue = '\uffff';//// 摘要://     表示 System.Char 的最小可能值。此字段为常数。public const Char MinValue = '\0';//// 摘要://     将指定的 Unicode 码位转换为 UTF-16 编码字符串。//// 参数://   utf32://     21 位 Unicode 码位。//// 返回结果://     由一个 System.Char 对象或一个 System.Char 对象的代理项对组成的字符串,等效于 utf32 参数所指定的码位。//// 异常://   T:System.ArgumentOutOfRangeException://     utf32 不是从 U+0 到 U+10FFFF 的有效的 21 位 Unicode 码位,不包括从 U+D800 到 U+DFFF 的代理项对。public static string ConvertFromUtf32(int utf32);//// 摘要://     将 UTF-16 编码的代理项对的值转换为 Unicode 码位。//// 参数://   highSurrogate://     高代理项代码单元(即代码单元从 U+D800 到 U+DBFF)。////   lowSurrogate://     低代理项代码单元(即代码单元从 U+DC00 到 U+DFFF)。//// 返回结果://     highSurrogate 和 lowSurrogate 参数表示的 21 位 Unicode 码位。//// 异常://   T:System.ArgumentOutOfRangeException://     highSurrogate 不在 U+D800 到 U+DBFF 的范围内,或 lowSurrogate 不在 U+DC00 到 U+DFFF 的范围内。public static int ConvertToUtf32(Char highSurrogate, Char lowSurrogate);// ... ...}
}   
 //// 摘要://     表示一个 8 位无符号整数。[ComVisible(true)]public struct Byte : IComparable, IFormattable, IConvertible, IComparable<Byte>, IEquatable<Byte>{//// 摘要://     表示 System.Byte 的最大可能值。此字段为常数。public const Byte MaxValue = 255;//// 摘要://     表示 System.Byte 的最小可能值。此字段为常数。public const Byte MinValue = 0;// ... ...}
}

C# 中的char 和 byte相关推荐

  1. java中的char类型

    2019独角兽企业重金招聘Python工程师标准>>> 一:char的初始化 char是Java中的保留字,与别的语言不同的是,char在Java中是16位的,因为Java用的是Un ...

  2. 【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集

    Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII, ...

  3. char和byte的区别

    cannot convert parameter 1 from 'unsigned char [1024]' to 'const char *' byte 是字节数据类型 ,是有符号型的,可以表示-1 ...

  4. char几个字节java_java中的char占几个字节实例分析

    java中的char占几个字节实例分析 1:"字节"是byte,"位"是bit : 2: 1 byte = 8 bit : char 在Java中是2个字节.j ...

  5. [转载]c#中 uint--byte[]--char[]--string相互转换汇总

    在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问win32api的时候往往需要向api中传入DWORD参数即:uint参数这些数值所表示的数据在实际的应用中可能需要以字符的形式显示,但 ...

  6. c#中 uint--byte[]--char[]--string相互转换汇总

    uint-----byte[]-----char[]-----string 在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问win32api的时候往往需要向api中传入DWORD参数 ...

  7. Python工作笔记-往dll中传入char*类型的参数并且如何接收char*的值

    dll中getColorName对应的定义声明如下: 因为Python中没有char这种数据,所以直接用会有如下的问题: 源码如下: import ctypesif __name__=='__main ...

  8. java中的char_java中的char是什么意思?

    java中的char是什么意思? 发布时间:2020-05-15 23:12:27 来源:亿速云 阅读:360 作者:Leah java中的char是什么意思?除了程序员外大部分人都不太了解,今天小编 ...

  9. 浅聊一下Java中的char类型

    什么是Unicode Unicode是一种字符编码方案,它为每种语言中的每个字符都设定了统一唯一的二进制编码,也就是规定了二进制和字符的映射,以实现跨语言.跨平台进行文本转换.处理的要求,但是它并没有 ...

最新文章

  1. python小程序-整理了适合新手的20个Python练手小程序
  2. 判断一棵二叉树是否为AVL树
  3. mysql python 3.5_python3.5 与 mysql 交互
  4. linux kvm百度云,容器与云|如何在 Ubuntu Linux 上使用 KVM 云镜像
  5. ag 搜索工具参数详解
  6. DR.com客户端解密过程逆向分析
  7. python3 format函数_【Python3 第三日】%和format格式化输出 函数
  8. 测量两台机器的的网络延迟和时间差
  9. 计算机英语写作,计算机英语8.4_电邮写作+.ppt
  10. RT-Thread 软件包制作及发布流程
  11. 微信小程序的如何使用全局属性 —— 微信小程序教程系列(5)
  12. 精简Cocos2dx-python环境搭建工程创建过程
  13. Hiho303周 H国的身份证号码I
  14. 5 个好用的开发者 Vim 插件
  15. 【数据结构】 医院选址
  16. 林氏物语之春江花月.音乐随想系列之sleeping sun及诗经版译文
  17. iPhone开发环境的安装
  18. 9个非常实用的CSS图标库
  19. Android下强制关闭其他程序
  20. 赛迪智库发布《虚拟现实产业与应用白皮书》

热门文章

  1. HBase 在人工智能场景的使用
  2. github中删除已建仓库(二)
  3. 或许每条喵咪上辈子都是陨落的码农
  4. 详谈DHCP SNOOP等多方面的安全设置(2)
  5. tomcat安全机制j_security_check(简单版)
  6. 初学Java ssh之Spring 第二篇
  7. 活动目录数据库授权恢复
  8. c语言素数程序出现大空行,C语言实现寻找大素数
  9. mysql的主从分离_Mysql的主从分离配置
  10. 在java面向对象编程中_谈一谈你对封装_继承_多态概念的理解_Java新职篇:面向对象编程的3个原则是什么?...