【发布时间】:2014-08-24 18:23:43
【问题描述】:
我正在使用以下程序将两个以 hex,hex# 格式编写的十六进制字符串转换为整数。
程序:
a=raw_input("Serial Command: ")
if a=="q":
break
ser.write(a)
time.sleep(1)
b=ser.readline()
print "b=",b
azt=b[:8]
alt=b[9:17]
print "azt=",azt,"|","alt=",alt
print int(azt)," ",int(alt)
输出和跟踪:
Serial Command: z
b= 07A49B00,0006EF00#
azt= 07A49B00 | alt= 0006EF00
Traceback (most recent call last):
File "C:\Users\Jeff\Desktop\celestronserial.py", line 58, in <module>
print int(azt)
ValueError: invalid literal for int() with base 10: '07A49B00'
int(azt/alt) 函数返回一个错误,指出它不是以 10 为底的。从“alt/azt=”行的输出中可以看到,罪魁祸首是一些空白。谁能告诉我为什么我要拆分这个空白表格?我该如何摆脱它?我试过 replace(" ","") 无济于事。
【问题讨论】:
-
我认为引用的代码来自循环内部,因为循环外部
break是语法错误。 -
到底是什么让你觉得罪魁祸首......是一些空白。"?你正在尝试转换一个表示(大概)base-16数字的字符串,但作为一个表示以 10 为底的数字的字符串,这是行不通的。阅读the docs on
int。