C# byte转为有符号整数实例

C#开发,收到下位机串口数据(温度信息),可能是正数也可能是负数,如何转换?

第一反应是想起书本上的理论,无符号数表示范围是多少到多少,有符号数的表示范围是多少到多少,这就把问题复杂化了,

别忘了uint类型:

uint raw = (uint)(bytes[7] * 256 + bytes[8]); //本项目的实际情况,用两个byte表示问题数字

int wd = (int)raw;

byte先转uint,uint再转int.

补充知识:c# byte数组转换 8位有符号整数 16位有符号整数 32位有符号整数

byte数组

byte[] aa = new byte[] { 0xF8, 0x66, 0x55, 0x44 };

1.转换成8位有符号整数

sbyte sb = (sbyte)aa[0];

2.转换成16位有符号整数

Int16 int16 = BitConverter.ToInt16(aa, 0);

3.转换成32位有符号整数

Int32 int32 = BitConverter.ToInt32(aa, 0);

以上这篇C# byte转为有符号整数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • c# 使用Task实现非阻塞式的I/O操作

    在前面的<基于任务的异步编程模式(TAP)>文章中讲述了.net 4.5框架下的异步操作自我实现方式,实际上,在.net 4.5中部分类已实现了异步封装.如在.net 4.5中,Stream类加入了Async方法,所以基于流的通信方式都可以实现异步操作. 1.异步读取文件数据 public static void TaskFromIOStreamAsync(string fileName) { int chunkSize = 4096; byte[] buffer = new byte[chu

  • c# 面试必备线程基础知识点

    线程的知识太多,知识点有深有浅,往深的研究会涉及操作系统.CPU.内存,往浅了说就是一些语法.没有一定的知识积累,很难把线程的知识写得全面,当然我也没有这个能力.所以想到一个点写一个点,尽量总结一些有用的知识点.线程是个大话题,这个系列可能会有好几遍关于线程的,先从基础的开始,热热身. 一些基础概念 线程(Thread)是操作系统能够进行运算调度的最小单位.它是进程中的实际运作单位,一个进程中可以启动多个线程,每个线程可以并行执行不同的任务.严格意义上来说,同一时间可以并行运行的线程数取决于 C

  • windows系统下,如何在C#程序中自动安装字体

    1.1.使用代码安装字体 注意:安装字体时,需要windows的管理员权限. [DllImport("kernel32.dll", SetLastError = true)] public static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString); [DllImport("gdi32")] public static extern i

  • 利用C#9.0新语法如何提升if语句美感

    前言 C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁.本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例. 使用属性模式代替 IsNullOrEmpty 在任何你使用 IsNullOrEmpty 的时候,可以考虑这样替换: string? hello = "hello world"; hello = null; // 旧的方式 if (!string.IsNullOrEmpty(hello)) { Console.WriteLine

  • 关于c#中单例模式的一些问题

    本文主要介绍了关于单例模式的一些问题,想学习C#单例模式的同学们可以看一看,还是有些帮助 c#中的单例模式 单例模式是指在设计一个类时,保证在运行期间只有一个实例对象,因为过多相同的实例对象会占用内存空间. ##举个例子 1.声明一个静态的Class1类的变量来引用唯一的对象. 2.创造私有的无参构造方法,使外部无法调用这个类的构造方法. 3.创建静态的方法,创建此类唯一的对象. 4.通过TempClass1 = new Class1();调用私有构造方法创建该实例. #单例模式的一些特点 1.

  • 如何在C# 中查找或结束程序域中的主、子进程

    有时候,我们的程序需要启动一些子进程,如嵌入的图形程序. 当启动一个进程后,获得这个进程信息Process,然后其内部在某个时刻启动了一个子进程,这个时候就涉及程序域和进程树的概念.当我们通过非正常操作的方式结束前面获得的进程信息Process时(如Kill掉),可能并没有实际结束子进程.因为当有主进程启动了子进程后,所有的进程实际上是被放在程序域中运行的(winform的Program文件中的Application域中),而结束的仅仅是域中的某个进程.当然,如果我们正常推出主进程,实际上App

  • C# byte转为有符号整数实例

    C#开发,收到下位机串口数据(温度信息),可能是正数也可能是负数,如何转换? 第一反应是想起书本上的理论,无符号数表示范围是多少到多少,有符号数的表示范围是多少到多少,这就把问题复杂化了, 别忘了uint类型: uint raw = (uint)(bytes[7] * 256 + bytes[8]); //本项目的实际情况,用两个byte表示问题数字 int wd = (int)raw; byte先转uint,uint再转int. 补充知识:c# byte数组转换 8位有符号整数 16位有符号整

  • C#如何从byte[]中直接读取Structure实例详解

    序.前言 emmmmm,首先这篇文章讲的不是用BinaryFormatter来进行结构体的二进制转换,说真的BinaryFormatter这个类其实现在的作用并不是特别大了,因为BinaryFormatter二进制序列化出来的结果只能用于.net平台,现在可能就用于如存入Redis这种情况下会在使用. 去年年尾的样子,我阅读学习某C++开发的程序源码时,发现作者用了一个很骚的操作直接将byte[]数组转为了结构体对象: 上面的data变量是一个指向unsigned char类型的指针,就只要一个

  • C#byte数组与Image的相互转换实例代码

    C#byte数组与Image的相互转换实例代码 功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示. 3.从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上. 这里的Image是System.Drawing.Image. //Get an image from file Image image = Image.FromFile("D:\\test.jpg&q

  • Java实现提取不重复的整数实例

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子: 9876673 输出例子: 37689 import java.util.HashSet; import java.util.Set; import java.util.Scanner; public class Main{ public static int noRepeatNum(int n

  • 将List集合中的map对象转为List<对象>形式实例代码

    本文实例主要实现将List集合中的map对象转为List<对象>形式,下面是完整代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.bea

  • 将python图片转为二进制文本的实例

    写在最前面: 我在研究机器学习的过程中,给的数据集是手写数字图片被处理后的由0,1表达的txt文件,今天写一写关于图片转化为二进制txt文件的python实践 在这里,我们使用python中的Pillow库,Pillow库中有一个很重要的类是Image,可以对图片进行很多处理. 首先,导入Image类 from PIL import Image 打开图片 im=Image.open('1.jpg') 获取图片宽和高 width=im.size[0] height=im.size[1] 也可以这样

  • PHP 计算两个特别大的整数实例代码

    废话不多说了,具体代码如下所示: function getIntAdd($a,$b){ $c = ''; $bCount = strlen($b); $aCount = strlen($a); $count = max($bCount,$aCount); $aDiff = $count - $aCount; $bDiff = $count - $bCount; for($i = $count - 1;$i >= 0;$i--){ $aVal = $count - $i <= $aCount ?

  • Python读取mat文件,并转为csv文件的实例

    初学Python,遇到需要将mat文件转为csv文件,看了很多博客,最后找到了解决办法,代码如下: #方法1 from pandas import Series,DataFrame import pandas as pd import numpy as np import h5py datapath = 'E:/workspacelxr/contem/data.mat' file = h5py.File(datapath,'r') file.keys() def Print(name):prin

  • 用java将GBK工程转为uft8的方法实例

    本文介绍了用java将GBK工程转为uft8,分享给大家,具体如下: windows下的默认编码为GBK还有gb2312,如何把gbk的java工程转为utf8的呢,如果直接修改工程编码,其实里面的java文件中中文是会乱码的,写了个批量转换java工程的程序,消遣一下. 为什么要转码? 有些老的项目,或者朋友的项目之前没注意在windows上不是utf8,而你有需要看注释或者什么,总不能一个文件一个文件的去改编码属性吧. 本程序试用范围 gbk的代码,或者gb2312的工程均可以转换 编码转换

  • 用python打印1~20的整数实例讲解

    while语句打印1-20的整数,并且每行打印五个数,为了实现每行5个数,我们使用一个if判断语句来实现,判断当打印出5个数之后,自动换行打印出来,直至完全输出来.希望对正在学习python的你们有所帮助. 第一步:先打开我们的pycharm软件,然后新建一个python文件,"file","new","python file" 第二步:新建好python文件之后,我们在编辑页面输入以下代码: i=1 while i<=20:    pri

随机推荐