C#byte类型

2023-05-16

byte类型的范围是0~255
转换为二进制是00000000~11111111

----------------------------------------------------------

C#中对byte类型的处理还是很特殊的。
下面用几行简单的代码来说明问题
byte x=1;
byte y=2;
byte z=x+y; //error:无法将int类型转换为byte类型
1.可能很多会认为这段代码没有问题,实际上第三行会产生编译错误:无法将int类型转换为byte类型!

2.因为C#编译器会认为byte类型和byte类型运算的结果是int型,实际上对short类型也做了相似的处理。

3.至于为什么这样设计,因为byte或short类型相互运算比较容易发生溢出,所以在运算的时候直接都转换为int来运算了。

4.再看下面的代码
byte i=1; //OK
这里的字面值1是被编译器识别为int类型的,在以上声明中,整数1
从 int 类型隐式转换为 byte 类型。如果整数超出了 byte 类型的范围,则将发生编译错误。

5.上面是MSDN中的说法,实际上这个隐式转换违背了范围小的类型可以隐式转换为范围大的类型这条规则,但是在C#中这个转换的确是合法的。
注意这个转换只有用整型的字面值来赋值运算的时候才成立,像这样就不可以了
int x=1;
byte i=x; //error: 无法将int类型转换为byte类型

6.在看下面的代码:
byte i=1;
i+=1; //OK
这行代码是可以通过的,原因是C#中x+=y并不是总相当于x=x+y的!
如果x+y的结果的类型可以隐式转换为x的类型,那么x+=y相当于x=x+y
如果x+y的结果的类型可以显式转换为x的类型,并且x=y也合法,那么x+=y相当于x=(T)(x+y),其中T是x的类型。

7.就像上面这行代码,i+1是int类型的,可以显式转换为byte类型,而i=1也合法,所以i+=1就相当于i=(byte)(i+1)
i=i+1; //error:无法将int类型转换为byte类型
这行比较容易理解,1被编译器识别为int类型,所以i+1的结果是int类型的,无法将int类型转换为byte类型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#byte类型 的相关文章

  • Java 中的有符号字节类型和按位运算符?

    引用自甲骨文网站 http docs oracle com javase tutorial java nutsandbolts datatypes html byte 字节数据类型是8位带符号的二进制补码整数 最小值为 128 最大值为12
  • C++ 中的整数字节交换

    我正在为我的 C 课程做家庭作业 我正在研究的问题如下 编写一个函数 它接受一个无符号短整型 2 个字节 并交换字节 例如 如果交换后 x 258 00000001 00000010 则 x 将为 513 00000010 00000001
  • 撇号打印为 â\x80\x99

    import requests from bs4 import BeautifulSoup import re source url requests get http www nytimes com pages business inde
  • 为什么字符串的字节大小比长度长? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么会这
  • 如何将字节字符串拆分为单独的部分

    我一直在尝试创建波形图像 并且从 wav文件使用song wave open and song readframes 1 返回 b x00 x00 x00 x00 x00 x00 我怎样才能把它分成三个独立的部分 例如b x00 x00 b
  • Java 中最好的可调整大小的循环字节缓冲区是什么?

    我需要 Java 中的字节缓冲区类以供单线程使用 我应该能够在缓冲区后面插入数据并在前面读取数据 摊销成本为 O 1 缓冲区在满时应该调整大小 而不是抛出异常或其他东西 我可以自己写一个 但如果标准 Java 包中尚不存在这个 我会感到非常
  • Java中将short转换为byte[]

    我怎样才能转换short 2 个字节 到 Java 中的字节数组 例如 short x 233 byte ret new byte 2 应该是这样的 但不确定 0xFF lt lt 8 x gt gt 0 EDIT 您还可以使用 java
  • 将位的字符串表示形式转换为字节

    我刚刚开始学习文件压缩 但遇到了一些障碍 我有一个应用程序将诸如 程序 之类的字符串编码为压缩的二进制表示形式 010100111111011000 请注意 这仍然存储为字符串 Encoding g 111 r 10 a 110 p 010
  • 使用 Cp500 编码陌生事物(LF 和 NEL)

    最近 在从字节转换为字符串 然后再从字符串转换为字节的过程中 我遇到了 Cp500 EBCDIC 编码的奇怪问题 问题在于一个特定的角色就是在这个转变过程中 被转变为这个角色 下面的代码验证了这一点 byte b25 0x25 byte b
  • 快速字符串到 byte[] 的转换

    目前我正在使用此代码将字符串转换为字节数组 var tempByte System Text Encoding UTF8 GetBytes tempText 我在我的应用程序中经常调用这一行 并且我真的很想使用更快的 如何比默认的 GetB
  • c++ - 将“std::vector”的内容保存到文件

    我使用 writeFileBytes 下面的函数来写入a的内容std vector
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • 如何在Python中正确声明ctype结构+联合?

    我正在制作一个二进制数据解析器 虽然我可以依靠 C 但我想看看是否可以使用 Python 来完成该任务 我对如何实现这一点有一些了解 我当前的实现如下所示 from ctypes import class sHeader Structure
  • 如何将 byte[] 转换为 Byte[] 以及相反?

    如何转换byte to Byte 并且Byte to byte 在不使用任何第三方库的情况下 有没有一种方法可以仅使用标准库快速完成 字节 到字节 byte bytes Byte byteObject ArrayUtils toObject
  • C++ 中的有符号短到字节

    我正在尝试使用 C 将十六进制数字转换为短数字 2 个字节 一切都很好 除了一件事 从短到字节的签名转换 最后一次测试 我发现了这个问题 但并不能真正从中受益 可移植的有符号 无符号字节转换 C https stackoverflow co
  • 使用miscutil 的C# 和java 大端字节之间的差异

    我正在使用miscutil http www yoda arachsys com csharp miscutil 使用套接字在 Java 和 C 应用程序之间进行通信的库 我试图找出以下代码之间的区别 这是 Groovy 但 Java 结果
  • .NET 中可以使用通用 BitConverter.GetBytes 吗?

    是否可以创建类似的方法BitConverter GetBytes 也接受作为输入范围类型的Object 不使用编组处理here https stackoverflow com questions 1455581 generic bitcon
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是

随机推荐

  • 如何判断蓝牙设备类型

    我们在开发Android的蓝牙应用时 xff0c 可能需要知道扫描到的蓝牙设备是什么类型 xff0c 然后过滤掉不符合要求的设备 xff0c 只保留符合要求的设备 xff0c 例如我们在车载系统上开发蓝牙电话应用时 xff0c 我们希望只显
  • Aspose.Words for Java 体验

    公司中要做一些导出word的工作 xff0c 经别人推荐 xff0c 使用了Aspose Words for Java xff0c 感觉很好用 xff0c 美中不足的地方就是 xff0c 它是收费软件 原理吗 xff1f 比较常规 xff0
  • 汽车制造行业OEM Tier1 Tier2指代什么?

    OEM OEM是Original Equipment Manufacturer的缩写 xff0c 通常指设备厂商 主机厂 整车厂 例如 xff1a 宝马 奔驰 奥迪 大众 丰田 国内汽车主机厂排名前十分别是上汽集团 东风汽车 北京汽车 长安
  • Android应用系统签名方法

    1 应用配置sharedUserId 在AndroidManifest xml文件根节点中加入属性 xff1a android sharedUserId 61 34 android uid system 34 2 找到系统签名文件 plat
  • Android 读取CPU/GPU运行参数(MTK平台)

    一 使用场景 Android运行一段世时间后 xff0c 系统出现卡顿 二 分析 amp 定位问题 系统卡顿 xff0c 同时又发现芯片温度很高 xff0c 怀疑是温度过高导致CPU降频 xff0c 因此我们要将一段时间内CPU的运行信息打
  • Android签名 (二) 制作签名文件

    你可能想知道 通过这篇博客可以解决哪些问题以及学到什么 xff1a 1 公司开发一个新的app xff0c 如何创建一个应用签名 xff1f 2 为了安全性 xff0c Android系统不想使用Google给的原生签名 xff0c 如何定
  • Android签名 (一) 查看签名信息

    你可能想知道 通过这篇博客可以解决哪些问题以及学到什么 xff1a 1 如果我们有一个应用 xff0c 如何查看应用的签名信息 xff1f 2 如果我们有签名原始文件 xff0c 如何查看签名文件中的签名信息 xff1f 这篇博客介绍了如何
  • L8 U3 职业生涯

    Module 1 谈论你最近的工作 1 描述工作 描述工作的形容词 让我们来看一下可以用来描述工作 xff0c 项目和客户的形容词 用enjoyable 和 engaging来描述你觉得有意思的工作或者项目 For me sales is
  • L8 U4 商务旅行

    Module 1 计划商务旅行 1 处理信息 You mean with Lindstrom 你是说和林特罗姆 xff1f Yes with Lindstrom 是的 xff0c 和林特罗姆 Exactly 完全正确 You mean yo
  • L8 U5 产品和创新

    Module 1 产品特点 1 产品特点 询问产品特性 在询问商店中的产品时 xff0c 您可能首先想询问其质量水平 top of the range 高档的middle of the range 中档的good value for mon
  • Android打包jar的两种方法

    方法一 xff1a 使用Android Studio打包 方法二 xff1a 使用Android Build System打包 一 Android Studio打包 1 新建Android Library xff0c 取名为opensdk
  • LCS 下载插件

    难度简单2收藏分享切换为英文接收动态反馈 小扣打算给自己的 VS code 安装使用插件 xff0c 初始状态下带宽每分钟可以完成 1 个插件的下载 假定每分钟选择以下两种策略之一 使用当前带宽下载插件将带宽加倍 xff08 下载插件数量随
  • 调用webservice异常总结

    发布和调用Webservice很简单 xff0c 但小问题依然不断 xff0c 特总结如下 xff1a 一 Java调用 net的webService产生 服务器未能识别 HTTP 标头 SOAPAction 的值 错误 解决方案 xff1
  • 去除Evaluation Warning : The document was created with Spire.PDF for Java.

    去除Evaluation Warning The document was created with Spire PDF for Java 最近项目中有一个需求需要把PDF文件添加页码 xff0c 最终在网上找到了用Spire去添加的方法
  • 第二章 简单网页的爬取与Xpath、Json使用 2021-09-09

    爬虫系列总目录 本章节介绍爬虫中使用的基础库用于选择 xff0c 过滤页面信息 包括requests xff0c bs4 xff0c xpath xff0c 正则表达式re xff0c json 等内容 xff0c 能够实现对简单页面的获取
  • 解决crontab定时任务多次执行

    今天使用linux crontab定时任务时 xff0c 可能由于配置不妥 xff0c 任务多执行一次 xff0c 如下是我程序的日志记录 xff08 执行了两次 xff0c 我设置的是每分钟执行1次 xff09 解决如下 重启cronta
  • ruoyi对接CAS统一身份认证

    暂定逻辑如下 xff1a 搭建CAS服务器端 xff1a 项目地址 xff1a https gitee com weigang wu cas server webapp git 项目里有二开的说明文档 xff0c 如 xff1a 按照自定义
  • Linux 系统启动过程

    简介 Linux 系统启动过程大致分为5个阶段 xff1a 1 内核的引导 2 运行 init 3 系统初始化 4 建立终端 5 用户登录系统 内核引导 计算机通电后 xff0c 首先会进行 BIOS 开机自检 xff0c 然后根据BIOS
  • Ubuntu 修改$PS1 自定义命令提示符

    文章更新于 xff1a 2020 03 25 文章目录 一 自定义命令提示符1 可修改的是那部分 xff1f 2 修改 PS1 变量3 PS1 变量格式4 如何修改背景颜色5 修改字体 二 Enjoy xff01 一 自定义命令提示符 1
  • C#byte类型

    byte类型的范围是0 255 转换为二进制是00000000 11111111 C 中对byte类型的处理还是很特殊的 下面用几行简单的代码来说明问题 byte x 61 1 byte y 61 2 byte z 61 x 43 y er