Chinaunix
标题:
请教hex函数将十进制转换为十六进制的问题
[打印本页]
作者:
gdmgb520
时间:
2013-09-25 13:12
标题:
请教hex函数将十进制转换为十六进制的问题
刚学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'
>>>
作者:
代号:军刀
时间:
2013-09-25 15:30
可能是你脚本其他地方有问题吧
作者:
conn2011
时间:
2013-09-25 15:45
PyQt里的控件获取的字符串均为QString类型,用unicode转一下才能像你这样用。
作者:
gdmgb520
时间:
2013-09-25 16:53
回复
3#
conn2011
谢谢,我有用unicode转换,但是还是不行,
我晚上回去帖我的详细代码。
谢谢!
作者:
gdmgb520
时间:
2013-09-26 13:13
标题:
完整代码如下,出现问题的是dec2hex这个函数
本帖最后由 gdmgb520 于 2013-09-26 13:20 编辑
import sys
import string
from math import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self,parent=None):
super(Form,self).__init__(parent)
self.fromText = QTextEdit()
self.toText = QTextEdit()
self.convertorButton = QPushButton( "convertor" )
self.hex2decButton = QPushButton( "hex2dec" )
self.dec2hexButton = QPushButton( "dec2hex" )
layout = QVBoxLayout()
layout.addWidget(self.fromText)
layout.addWidget(self.toText)
layout.addWidget(self.convertorButton)
layout.addWidget(self.hex2decButton)
layout.addWidget(self.dec2hexButton)
self.setLayout(layout)
self.fromText.setFocus()
self.connect( self.convertorButton, SIGNAL( 'clicked()' ), self.updateUi )
self.connect( self.hex2decButton, SIGNAL( 'clicked()' ), self.hex2dec )
self.connect( self.dec2hexButton, SIGNAL( 'clicked()' ), self.dec2hex )
self.setWindowTitle("DataConveter")
def updateUi(self):
try:
text = unicode(self.fromText.toPlainText()) #unicode(self.fromText.text())
self.fromText.clear()
self.toText.append("%s = <b>%s</b>" % (text, eval(text)))
print "%s" %(text)
except:
self.toText.append("<font color=red>%s is invalid!</font>" % text)
def hex2dec(self):
try:
text = unicode(self.fromText.toPlainText())
dec = int(text,16)
self.toText.append("%s" % (dec))
print "%s" %(text)
except:
print "come to here"
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"
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
复制代码
作者:
gdmgb520
时间:
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)) 也不行
作者:
conn2011
时间:
2013-09-26 15:52
from PyQt4.QtCore import *
别动不动就用这种导入方式!
QtCore里面有个函数就是hex,已经将内置函数给覆盖了,当然就会出错。
回复
5#
gdmgb520
作者:
conn2011
时间:
2013-09-26 15:56
还有就是eval别滥用,你输个 self.close() 进去转换试试
作者:
gdmgb520
时间:
2013-11-07 09:06
回复
8#
conn2011
谢谢!!!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2