praegune kellaaeg 18.06.2025 20:39:47
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
priithansen
HV kasutaja
liitunud: 20.06.2002
|
29.09.2010 00:07:06
Lahendatud: Python ja hex arvutamine |
|
|
Vajan abi pythoni programmiga. See on mu esimene katsetud antud keeles (mõningane php kogemus ainult olemas)
Üritan kasutada Bitstring nimelist lisa pythonile, et teha vajalikud arvutused hex arvudega.
Siin on koodi näidis kõik nagu töötab va viimane funktsiooni ots kus oleks vaja crc + crcHigh + data kokku liita.
#!/usr/bin/python
#Import stuff for bit manipulation and serial connection
from bitstring import Bits, BitString
import serial
#Provided crc value
crc = BitString('0x147A')
#Data for test
data = BitString('0x09')
# Function to calculate the data packet
def crcCalc(crc,data):
crc.rol(1)
crc ^= BitString('0XFFFF')
crcHigh = crc[0:8]
result = crc + crcHigh + data
return result
checksum = crcCalc(crc,data)
# Testing grounds
print checksum
|
Viimane liitmine peaks siis olema 0xD70B + 0xD7 + 0x09 = D7EB
Minu program aga annab 0xd70bd709
Keegi nutikam ja pythoniga kursis olev oskab äkki nõu anda millega ma mööda panen
Aitäh
Nii sain koodi endale sobivalt tööle. Millegipärast ei õnnestu kuidagi asju liita, kui nad on bin või hex vormingus.
Siin siis töötav kood. Mingit vastutust ei võta, et asi ka viisakalt lahendatud on.
#!/usr/bin/python
#Import stuff for bit manipulation and serial connection
from bitstring import Bits, BitString
import serial
#Provided crc value
crc = BitString('0x147A')
#Data for test
data = BitString('0x09')
# Function to calculate the data packet
def crcCalc(crc,data):
crc.rol(1)
crc ^= BitString('0XFFFF')
crcHigh = crc[0:8]
crcint = crc.uint + crcHigh.uint + data.uint
result = hex(crcint)
return result
checksum = crcCalc(crc,data)
# Testing grounds
print checksum |
|
|
Kommentaarid: 10 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
29.09.2010 15:38:17
|
|
|
Lihtsalt + operaatoriga ei saa sa neid kokku liita, kuna BitString klassi __add__ meetod on pandud just neid stringe kokku lükkama.
Bin ja hex vormingus liitmine ei toimi selle pärast, et vastavad atribuudid tagastavad stringi.
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
priithansen
HV kasutaja
liitunud: 20.06.2002
|
29.09.2010 18:17:34
|
|
|
Tänud seletuse eest DoS. Hea teada ka miks asjad nii töötavad.
|
|
Kommentaarid: 10 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|