(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)

起因:
我是因为传感器手持显示器读到负的值,传感器说明书说通讯回馈负值是以补码形式,因此开始研究如何显示。
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第1张图片

前情提要:
modbus 485得到的是16进制

(右键选择16进制,否则是乱码)
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第2张图片
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第3张图片

已知原码为负数,labview中将通讯得到的那部分16进制,进行以下操作后可推出原码值对应的十进制数

    • 1. 16进制 转换成16进制字符串
    • 2. 16进制(字符串)转10进制(数值)
    • 3. 10进制(数值)转2/10/16进制(字符串)
    • 补充1:字符串与数字格式相互转换
    • 补充2:[二进制,8进制,16进制,10进制转换](https://www.elecfans.com/news/1786160.html)
  • 补码
  • 已知原码为负数,补码推原码就是:

也就是说已知原码是负数, 16进制的补码由上面一顿操作 转换成了负数的原码
即图中:由0.2得到了4.2
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第4张图片

1. 16进制 转换成16进制字符串

注意:需要先把16进制 转换成16进制字符串
参考LabVIEW学习:十六进制和十六进制字符串相互转化(老哥很给力,直接贴的百度云)

转换成16进制字符串后才可以,继续进行进制转换。
在这里插入图片描述

2. 16进制(字符串)转10进制(数值)

在第1节的基础上,进行转换。

(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第5张图片
编程-》字符串-》数值/字符串转换-》十六进制数字符串至数值转换 (函数)
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第6张图片

3. 10进制(数值)转2/10/16进制(字符串)

(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第7张图片
数值(十进制)转十进制字符串:编程-》字符串-》数值至十进制数字符串转换 (函数)
格式化值:编程-》字符串-》格式化值 (函数)

%b二进制
%x十六进制

补充1:字符串与数字格式相互转换

数值(十进制)转十进制字符串:编程-》字符串-》数值至十进制数字符串转换 (函数)
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第8张图片
字符串转数值:可以用扫描

补充2:二进制,8进制,16进制,10进制转换

参考:二进制,8进制,16进制,10进制转换
数值转字符串:使用格式化值
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第9张图片

补码

基础知识参考原码、反码、补码知识详细讲解(此作者是我找到的讲的最细最明白的一个)

已知原码为负数,补码推原码就是:

例:
补码:1111 1111 1111 1111 1111 0011 1011 1101
(可以打开电脑的计算器直接复制进去)

(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第10张图片

先最后一位减1,

1111 1111 1111 1111 1111 0011 1011 1100

再除了第一位 剩下的全部取反。

1 然后都是0 1100 0100 0011
将1100 0100 0011复制进计算器可见十进制数值

再将他们十进制
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第11张图片
(笔记)labview各种进制转换(通讯得到的负数补码转换成负数原码)_第12张图片

你可能感兴趣的:(经验分享,开发语言)