-
VB.net小技巧——数字的进制转化及处理
VB.net小技巧——数字的进制转化及处理
在与FPGA的交互中,一般来说16进制,2进制用的比较多,但在界面中一般需要转化成10进制进行显示和公式运算。因此在这里列出一些常用的进制转化的方法,以便查阅。
1、10进制转2进制、16进制
Dim int As Int32 = -32768
'十进制转二进制
Dim str2 As String = Convert.ToString(int, 2)
'十进制转十六进制
Dim str16 As String = Convert.ToString(int, 16)
Debug.WriteLine("十进制转二进制:" & str2)
Debug.WriteLine("十进制转十六进制:" & str16)
返回结果为
十进制转二进制:11111111111111111000000000000000
十进制转十六进制:ffff8000
2、16进制转10进制
'十六进制
Dim str16 As String = "8000"
'十六进制转十进制
Dim int16 As Integer = Convert.ToInt16(str16, 16)
Debug.WriteLine(int16)
Dim int32 As Integer = Convert.ToInt32(str16, 16)
Debug.WriteLine(int32)
结果为
-32768
32768
3、接收到的数据为32bit,其中[28:0]是有效位,是一个有符号数,但[31:29]为0
Dim str32 As String = "10000009"
Dim mask As String = "e0000000"
'十六进制转十进制
Dim int32 As Integer = Convert.ToInt32(str32, 16) Or Convert.ToInt32(mask, 16)
Debug.WriteLine(int32)
4、根据工程实际需求,设计一个函数满足数据截取和数据计算的需求。
形参:
1、string 32bit 数据
2、有效位置:按照verilog的习惯表达,例如[5:4],[0],[31:0]等
3、指示这个数据是不是有符号数
Public Function bitterCal(ByVal aa As String, ByVal bb As String, ByVal cc As UInt32) As Int64
Dim dd = Strings.Replace(Strings.Replace(bb, "[", ""), "]", "")
Dim ff(2) As String
Dim ee(2) As String
ee = Split(dd, ":")
If ee.Length = 1 Then
ff(0) = ee(0)
ff(1) = ee(0)
ElseIf ee.Length = 2 Then
ff(0) = ee(0)
ff(1) = ee(1)
End If
Dim gg(2) As Int16
gg(0) = Val(ff(0))
gg(1) = Val(ff(1))
Dim hh As UInt64 = CLng("&h" & aa) >> gg(1)
Dim mask1 As Int64 = -2 ^ (gg(0) - gg(1) + 1)
Dim ii As Int64 = hh Or mask1
If cc = 0 Then
ii = hh And (Not mask1)
End If
bitterCal = ii
End Function
例如,输入
Debug.WriteLine(bitterCal("ffffffff", "[31:0]", 1))
1
输出为 -1。
Debug.WriteLine(bitterCal("00c4c4c4", "[15:8]", 1))
1
输出为 -60。
这样就比较方便了。
我这样写肯定不是最简洁的,有更好建议的童鞋在评论区可以留言指正。
————————————————
版权声明:本文为CSDN博主「十年老鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gzy0506/article/details/121483094
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式