C#16进制数转为10进制有符号数——处理传感器16进制字节流原始数据
原数据是四个字节组成例如 B102 一共16bit,要转化成有符号数,则最大是2^15,范围是(-32768,32768).
转换公式:
1.先转化为10进制trans
int xx= Convert.ToInt32(x, 16);
2.判断是否超了最大值
xx < Math.Pow(2, 15) ? xx : Math.Pow(2, 15)-xx
传感器响应数据从16原始字节流数据
例如:
发送:55 55 01 32 AA AA
返回:55 55 01 32 01 AB B1 02 03 05 32 14 AA AA
0X 01AB=427; 0X B102=-12546; 0X 0305=773; 0X 3214=12820 xxxx yyyy zzzz tttt 分别组成 16 位数,最高位为符号位,1 为负,0 位正
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace psdProcess
{public class psdProcess{//将字节流转化为16进制字符串public static List<string> BytesToStringHex(byte[] bytes){List<string> result = new List<string>();for (int i = 0; i < bytes.Length; ++i){result.Add (bytes[i].ToString("X2"));}return result;}public static double[] getValues(List<string> input){double[] result = new double[2] { 500.00, 500.00 };if (input.Count == 14 && input[0]=="55"&& input[1] == "55"&& input[12] == "AA"&& input[13] == "AA"){string x = input[4] + input[5];string y = input[6] + input[7];int xx= Convert.ToInt32(x, 16);int yy = Convert.ToInt32(y, 16);result[0] = xx < Math.Pow(2, 15) ? xx : Math.Pow(2, 15)-xx;result[1] = yy < Math.Pow(2, 15) ? yy : Math.Pow(2, 15)-yy;}return result;}//测试用将输入的测试字符串数组例如55 55 01 32 01 AB B1 02 03 05 32 14 AA AA拆分成list<string>public static List<string>getInputStringList(string temp){List<string> list = new List<string>();int l = 0;while (l < temp.Count()){string cur = "";if (temp[l] != ' '){while (l < temp.Length && temp[l] != ' ') { cur += temp[l]; ++l; }list.Add(cur);}else{while (l < temp.Length && temp[l] == ' ') ++l;}}return list;}}}
C#16进制数转为10进制有符号数——处理传感器16进制字节流原始数据相关推荐
- Java 将26进制数据转为10进制、十进制数据转为其它进制
1.十进制数据转为其它进制 /*** 进制转换* @param data 十进制数据* @param radix 待转换的进制* @return 转换后的字符串显示*/private String t ...
- C语言将16进制数转为10进制数
程序分析: 在16进制转为10进制时会遇到很多情况: 1. 开头是空格.符号等之后才是 0x 或 0X: 对于第一种情况,我们要先判断是字符,把空格这些去了,从字符开始:对于有'+'或'-' 的我们就 ...
- 【python】用python进行进制转换(10进制、2进制、16进制)
进制转换 ① 16进制转10进制 ② 16进制转2进制 ③ 10进制转16进制 ④ 10进制转2进制 ⑤ 2进制转16进制 ⑥ 2进制转10进制 博客由来写在前面:由于计组老师要求我们课后查一下进制转 ...
- 计算机计有符号数计算,有符号数处理
在计算机内,定点数分为有符号数(signed)和无符号数(unsigned).其中,有符号数的表示方法有三种:原码.反码和补码.反码表示法规定:正数的反码与其原码相同:负数的反码是对其原码逐位取反,但 ...
- C语言中 有符号数、无符号数、整数溢出
#include<stdio.h> void main() {int l=-1;unsigned int c=135; printf("%u\n",l+c); } 这个 ...
- Verilog关于signed、有符号数、算数移位、$signed()的使用
关于signed.有符号数.算数左移.算数右移.$signed().$unsigned()的理解. 1.signed可以和reg和wire联合使用,用于定义有符号数.在代码中使用负的十进制数赋值给有符 ...
- Verilog 和VHDL有符号数和无符号数相关运算
目录 一.Verilog有无符号数运算 1.有符号数和有符号数的加减运算(输入和输出为原码) 2.无符号数和有符号数的加减运算(输入和输出为原码) 3.有符号数和有符号数的乘法(输入和输出为原码) 二 ...
- C语言位运算之有符号数和无符号数
相同长度数据类型位运算 #include<stdio.h> int main(int argc, int* argv[]){int a_int1 = 0xFFFFFFFF; //有符号数负 ...
- verilog数值计算-有符号数和无符号数
verilog数值计算-有符号数和无符号数 位宽截断 算术运算 有符号数赋值 位宽截断 位宽大的数赋值给位宽小的数,数据就会被截断,截断的规则就是从低位开始取,被截断的是高位 code wire [5 ...
最新文章
- JavaScript之图片操作3
- 深入理解分布式技术 - ServiceMesh 服务网格
- Andoid自定义View的OnMeasure详解和自定义属性
- Oracle 11g RAC 添加新节点及故障解决案例
- python randrange函数_Python学习-函数补充2-内置函数
- 《浅谈架构之路:前后端分离模式》
- JEEWX微信开发更便捷,Ngrok 内网穿透利器应用
- 数据库工作笔记012---mysql触发器trigger 实例详解_保证数据库完整性还是不错的
- windows和linux之间共享文件 samba的使用
- Android 源码变迁
- html5svg在线编辑器,五款超实用的开源SVG工具
- php汉字转换拼音,php实现汉字转拼音
- 【无标题】【光纤光缆小知识】多模光纤的分类及应用
- mybatis动态查询字段、动态更新字段
- win11升级后黑屏问题
- MySQL-数据库的索引类型有哪些
- Java8新特性学习(lambda,函数式接口,stream,Optional)
- 最近做的一道很不错的题
- Matlab使用Camera Calibrator工具箱标定相机
- 基于FPGA的ASK/FSK调制
热门文章
- is620n,is620p,is620,伺服驱动器的代码和原理
- 饼图审美疲劳?来试试扇形图(彩虹图)吧
- 如何在 iPad 上运行 VSCode
- CSS-四种两栏式布局
- 小朵机器人安卓叫什么_小朵机器人手机版下载-小朵机器人app安卓版下载v1.3.2下载 - 八号下载安卓频道...
- fixed定位 input在IOS设备上光标位置异常问题
- MATLAB全部随机函数
- apicloud一键复制教程
- numpy.matmul()函数
- MySQL+分布式+框架+数据结构+源码+JVM+线程,大厂直通车!