/ ako previesť c písaný kód v Pythone [closed] - python, c, bittorrent

ako previesť c kód napísaný v jazyku Python [zatvorené] - python, c, bittorrent

Môže niekto vysvetliť, čo sa práve dejetento kód, aby som ho mohol písať v pytóne. Musím nasledovať presne rovnaké c písomné špecifikácie, takže neskôr na tejto časti bude implementovaná v bielych filtroch python bloom pre Bep33 bit torrent DHT

//fixed parameters
k = 2

m = 256*8

//the filter
byte[m/8] bloom   ##

function insertIP(byte[] ip) {

byte[20] hash = sha1(ip)

int index1 = hash[0] | hash[1] << 8 # how to in python?
int index2 = hash[2] | hash[3] << 8

// truncate index to m (11 bits required)
index1 %= m  ## ?
index2 %= m  ## ?

// set bits at index1 and index2
bloom[index1 / 8] |= 0x01 << index1 % 8   ## ??
bloom[index2 / 8] |= 0x01 << index2 % 8   ## ??
}

// insert IP 192.168.1.1 into the filter:
insertIP(byte[4] {192,168,1,1})

Snažím sa premeniť na python pozri komentáre nižšie

 import hashlib
import socket
import struct
class blommy(object):
def __init__(self):
self.bitarray= [0]*2048

def hashes(self,ip):
#convert decimal dotted quad string to long integer"
intip= struct.unpack(">L",socket.inet_aton(ip))[0] #>converting stringt to int
index = [0, 1]
hbyte = hashlib.sha1(intip) # # #sha1 doesnt accept int ? what needs to be done?
index[0] = ord(hbyte[0])| ord(hbyte[1])<< 8
index[1] = ord(hbyte[2])| ord(hbyte[3])<< 8
# how do i shift the bits?

odpovede:

2 pre odpoveď č. 1

sha1 akceptuje normálny reťazec v Pythone 2.x. Môžete potrebovať jednotlivé bajty priamo zo socket.inet_aton (ip) (nie ste si istí, či je objednávka správna pre váš algoritmus)

Čo sa týka bitových posunov, myslím, že Python má rovnakú syntax, ale ak máte pochybnosti o vykonaní pokynu, možno budete musieť pridať zátvorky.

Taktiež znak C môže fungovať ako int, ale v Pythone musíte vždy explicitne konvertovať medzi nimi pomocou funkcií ord () a chr ().

Dokonca aj veci %= a |= bude pracovať v Pythone.