欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用python解决Origin中十六进制和十进制整数转换的问题

程序员文章站 2022-06-27 18:38:19
利用python解决Origin中十六进制和十进制整数转换的问题Origin是由OriginLab公司开发的一个科学绘图、数据分析软件,功能非常强大,可以画出各种漂亮的图像,而且还能进行数理统计/数据分析等,工程狗们爱不释手的工具之一。但是最近炮哥的一个同事,遇到一个不大但是很膈应的问题,尝试多种办法均没有效解决方案,问题是这样的:客户提供的数据文件是规则的矩阵形式,但其中1列是十六进制数据,导入Origin软件后是这样的:上图中第C列中的数据均为十六进制数据,导致很难在Origin中进行数据运算...

利用python解决Origin中十六进制和十进制整数转换的问题

Origin是由OriginLab公司开发的一个科学绘图、数据分析软件,功能非常强大,可以画出各种漂亮的图像,而且还能进行数理统计/数据分析等,工程狗们爱不释手的工具之一。
但是最近炮哥的一个同事,遇到一个不大但是很膈应的问题,尝试多种办法均没有效解决方案,问题是这样的:
客户提供的数据文件是规则的矩阵形式,但其中1列是十六进制数据,导入Origin软件后是这样的:
利用python解决Origin中十六进制和十进制整数转换的问题
上图中第C列中的数据均为十六进制数据,导致很难在Origin中进行数据运算。当然,你可以用C++,JAVA,Python写一段脚本将原始的数据文件中的这列十六进制数据转换为十进制,然后另存一个文件,之后再导入Origin,该干啥干啥……
但是故事到此结束就没意思了!既然Origin最近几年发布的版本中均已经内置了Python,为什么不在Origin软件内部解决该困扰呢?
于是,炮哥写下了7行代码:

import PyOrigin#Line 1
PyOrigin.FindWorksheet('[Book1]数据示例').Columns(2).SetFormat(1)#Line 2
sourcecol = PyOrigin.FindWorksheet('[Book1]数据示例').Columns(2).GetData(0)#Line 3
tarlist=[]#Line 4
for i in range(len(sourcecol)):#Line 5
	tarlist.append((int(sourcecol[i],16)))#Line 6
PyOrigin.FindWorksheet('[Book1]数据示例').Columns(3).SetData(tarlist,0)#Line 7

下面逐行解释代码的含义
第一行是导入Origin内置的Python库,后面需要用库中的操作,不用过多解释
第二行是为了将第3列的数据全部设置为文本格式,SetFormat函数的参数为0表示数字,为1表示文本,还有其他参数的含义,详见帮助文件。这行代码的意义随第三行一起解释
第三行是为了读取第3列的全部数据(准确来说是文本),GetData函数包括两个参数(start,end)表示读取的起始行和结束行,此处直接写0,表示读取该列的所有数据。现在回答第二行的含义,如果不将该列数据先设置为文本格式,那么对于python能识别的数字,比如例子中的83、100等被读入后会被识别为float类型,数据变为了83.0、100.0,导致在第六行中转换为十进制时会报错,浮点数不能直接转十六进制的。
第四行新建空的列表,为了后续存储数据用,不解释
第五行和第六行是逐行对十六进制数据转换为十进制,并存储在tarlist列表中,用到了int()函数,该函数的用法为: int(字符串或者数字,进制数) 。
第七行是将tarlist中的数据写入到第4列中,需要注意的是在运行该脚本之前,要在Origin中先插入一列,保证存在第4列,否则达不到目的。
运行这段脚本之后,得到的效果是这样的,没毛病。
利用python解决Origin中十六进制和十进制整数转换的问题
(PS:炮哥在持续学习、持续更新中,敬请期待…)

本文地址:https://blog.csdn.net/wangjikun/article/details/107170362