原数据是四个字节组成例如 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进制字节流原始数据相关推荐

  1. Java 将26进制数据转为10进制、十进制数据转为其它进制

    1.十进制数据转为其它进制 /*** 进制转换* @param data 十进制数据* @param radix 待转换的进制* @return 转换后的字符串显示*/private String t ...

  2. C语言将16进制数转为10进制数

    程序分析: 在16进制转为10进制时会遇到很多情况: 1. 开头是空格.符号等之后才是 0x 或 0X: 对于第一种情况,我们要先判断是字符,把空格这些去了,从字符开始:对于有'+'或'-' 的我们就 ...

  3. 【python】用python进行进制转换(10进制、2进制、16进制)

    进制转换 ① 16进制转10进制 ② 16进制转2进制 ③ 10进制转16进制 ④ 10进制转2进制 ⑤ 2进制转16进制 ⑥ 2进制转10进制 博客由来写在前面:由于计组老师要求我们课后查一下进制转 ...

  4. 计算机计有符号数计算,有符号数处理

    在计算机内,定点数分为有符号数(signed)和无符号数(unsigned).其中,有符号数的表示方法有三种:原码.反码和补码.反码表示法规定:正数的反码与其原码相同:负数的反码是对其原码逐位取反,但 ...

  5. C语言中 有符号数、无符号数、整数溢出

    #include<stdio.h> void main() {int l=-1;unsigned int c=135; printf("%u\n",l+c); } 这个 ...

  6. Verilog关于signed、有符号数、算数移位、$signed()的使用

    关于signed.有符号数.算数左移.算数右移.$signed().$unsigned()的理解. 1.signed可以和reg和wire联合使用,用于定义有符号数.在代码中使用负的十进制数赋值给有符 ...

  7. Verilog 和VHDL有符号数和无符号数相关运算

    目录 一.Verilog有无符号数运算 1.有符号数和有符号数的加减运算(输入和输出为原码) 2.无符号数和有符号数的加减运算(输入和输出为原码) 3.有符号数和有符号数的乘法(输入和输出为原码) 二 ...

  8. C语言位运算之有符号数和无符号数

    相同长度数据类型位运算 #include<stdio.h> int main(int argc, int* argv[]){int a_int1 = 0xFFFFFFFF; //有符号数负 ...

  9. verilog数值计算-有符号数和无符号数

    verilog数值计算-有符号数和无符号数 位宽截断 算术运算 有符号数赋值 位宽截断 位宽大的数赋值给位宽小的数,数据就会被截断,截断的规则就是从低位开始取,被截断的是高位 code wire [5 ...

最新文章

  1. JavaScript之图片操作3
  2. 深入理解分布式技术 - ServiceMesh 服务网格
  3. Andoid自定义View的OnMeasure详解和自定义属性
  4. Oracle 11g RAC 添加新节点及故障解决案例
  5. python randrange函数_Python学习-函数补充2-内置函数
  6. 《浅谈架构之路:前后端分离模式》
  7. JEEWX微信开发更便捷,Ngrok 内网穿透利器应用
  8. 数据库工作笔记012---mysql触发器trigger 实例详解_保证数据库完整性还是不错的
  9. windows和linux之间共享文件 samba的使用
  10. Android 源码变迁
  11. html5svg在线编辑器,五款超实用的开源SVG工具
  12. php汉字转换拼音,php实现汉字转拼音
  13. 【无标题】【光纤光缆小知识】多模光纤的分类及应用
  14. mybatis动态查询字段、动态更新字段
  15. win11升级后黑屏问题
  16. MySQL-数据库的索引类型有哪些
  17. Java8新特性学习(lambda,函数式接口,stream,Optional)
  18. 最近做的一道很不错的题
  19. Matlab使用Camera Calibrator工具箱标定相机
  20. 基于FPGA的ASK/FSK调制

热门文章

  1. is620n,is620p,is620,伺服驱动器的代码和原理
  2. 饼图审美疲劳?来试试扇形图(彩虹图)吧
  3. 如何在 iPad 上运行 VSCode
  4. CSS-四种两栏式布局
  5. 小朵机器人安卓叫什么_小朵机器人手机版下载-小朵机器人app安卓版下载v1.3.2下载 - 八号下载安卓频道...
  6. fixed定位 input在IOS设备上光标位置异常问题
  7. MATLAB全部随机函数
  8. apicloud一键复制教程
  9. numpy.matmul()函数
  10. MySQL+分布式+框架+数据结构+源码+JVM+线程,大厂直通车!