免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11589 | 回复: 8
打印 上一主题 下一主题

请教hex函数将十进制转换为十六进制的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-25 13:12 |只看该作者 |倒序浏览
刚学Python,想自己写个十进制与十六进制转换的小工具,使用PyQt写界面。遇到下面问题,很疑惑,希望能得到大家帮助。谢谢。

>>> hex(12)
'0xc'
在Python Shell里这样是可以的。
我现在需要从textedit控件里得到text文件,并将文本转换为十六进制,输出到另一个textedit里。
在执行下面语句是就会出错:
dat = hex(eval(text))
其中text是从文本框中取到的数据,我直接吧text复制为'12'也不行,但是直接在在Python shell中执行是可以的,放在整个文件中就不行。
>>> t = '12'
>>> d = hex(eval(t))
>>> d
'0xc'
>>>


论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
2 [报告]
发表于 2013-09-25 15:30 |只看该作者
可能是你脚本其他地方有问题吧

论坛徽章:
0
3 [报告]
发表于 2013-09-25 15:45 |只看该作者
PyQt里的控件获取的字符串均为QString类型,用unicode转一下才能像你这样用。

论坛徽章:
0
4 [报告]
发表于 2013-09-25 16:53 |只看该作者
回复 3# conn2011

谢谢,我有用unicode转换,但是还是不行,
我晚上回去帖我的详细代码。

谢谢!


   

论坛徽章:
0
5 [报告]
发表于 2013-09-26 13:13 |只看该作者

完整代码如下,出现问题的是dec2hex这个函数

本帖最后由 gdmgb520 于 2013-09-26 13:20 编辑
  1. import sys
  2. import string
  3. from math import *
  4. from PyQt4.QtCore import *
  5. from PyQt4.QtGui import *

  6. class Form(QDialog):
  7.     def __init__(self,parent=None):
  8.         super(Form,self).__init__(parent)
  9.         self.fromText = QTextEdit()
  10.         self.toText = QTextEdit()
  11.         self.convertorButton = QPushButton( "convertor" )
  12.         self.hex2decButton = QPushButton( "hex2dec" )
  13.         self.dec2hexButton = QPushButton( "dec2hex" )
  14.         
  15.         layout = QVBoxLayout()
  16.         layout.addWidget(self.fromText)
  17.         layout.addWidget(self.toText)
  18.         layout.addWidget(self.convertorButton)
  19.         layout.addWidget(self.hex2decButton)
  20.         layout.addWidget(self.dec2hexButton)
  21.         
  22.         self.setLayout(layout)
  23.         self.fromText.setFocus()
  24.         
  25.         self.connect( self.convertorButton, SIGNAL( 'clicked()' ), self.updateUi )
  26.         self.connect( self.hex2decButton, SIGNAL( 'clicked()' ), self.hex2dec )
  27.         self.connect( self.dec2hexButton, SIGNAL( 'clicked()' ), self.dec2hex )
  28.         
  29.         self.setWindowTitle("DataConveter")
  30.         
  31.     def updateUi(self):
  32.         try:
  33.             text = unicode(self.fromText.toPlainText())  #unicode(self.fromText.text())
  34.             self.fromText.clear()
  35.             self.toText.append("%s = <b>%s</b>" % (text, eval(text)))
  36.             print "%s" %(text)
  37.         except:
  38.             self.toText.append("<font color=red>%s is invalid!</font>" % text)
  39.             
  40.     def hex2dec(self):
  41.         try:
  42.             text = unicode(self.fromText.toPlainText())
  43.             dec = int(text,16)
  44.             self.toText.append("%s" % (dec))
  45.             print "%s" %(text)
  46.         except:
  47.             print "come to here"

  48.     def dec2hex(self):
  49.         try:
  50.             text = unicode(self.fromText.toPlainText())
  51.             print text
  52.             print "%s" %(text)
  53.             print eval(text)
  54.             print string.atoi(text)
  55.             #dat = hex(int(a,10))
  56.             dat = hex(eval(text))
  57.             print dat
  58.             self.toText.append("%s" %(dat))
  59.         except:
  60.             print "come to here"
  61.                     
  62. app = QApplication(sys.argv)
  63. form = Form()
  64. form.show()
  65. app.exec_()
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-09-26 13:17 |只看该作者
本帖最后由 gdmgb520 于 2013-09-26 13:21 编辑

回复 2# 代号:军刀


    def dec2hex(self):
        try:
            text = unicode(self.fromText.toPlainText())
            print text
            print "%s" %(text)
            print eval(text)
            print string.atoi(text)
            #dat = hex(int(a,10))
            dat = hex(eval(text))
            print dat
            self.toText.append("%s" %(dat))
        except:
            print "come to here"

这个函数中就是  dat = hex(int(a,10)) 这里会出问题,及时我使用 dat = hex(eval(text)) 也不行

论坛徽章:
0
7 [报告]
发表于 2013-09-26 15:52 |只看该作者
from PyQt4.QtCore import *
别动不动就用这种导入方式!
QtCore里面有个函数就是hex,已经将内置函数给覆盖了,当然就会出错。回复 5# gdmgb520


   

论坛徽章:
0
8 [报告]
发表于 2013-09-26 15:56 |只看该作者
还有就是eval别滥用,你输个 self.close() 进去转换试试

论坛徽章:
0
9 [报告]
发表于 2013-11-07 09:06 |只看该作者
回复 8# conn2011


    谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP