Question: I WANT THIS CODE TO BE WRITTEN IN PYTHON. def calculateCRC(block,divisor, agent): dividend = block; reminder = []; zeroDivisor = []; frame = []; if
I WANT THIS CODE TO BE WRITTEN IN PYTHON.
def calculateCRC(block,divisor, agent):
dividend = block;
reminder = [];
zeroDivisor = [];
frame = [];
if (agent == 'transmitter'):
for i in range(0, len(divisor)-1):
dividend.append(0);
for i in range(0, len(divisor)):
frame.append(block[i]);
reminder.append(0);
zeroDivisor.append(0);
pointer = len(divisor);
while(pointer<=len(dividend)):
activeDivisor = [];
if (frame[0]== 1):
activeDivisor = divisor.copy();
else:
activeDivisor = zeroDivisor.copy();
for i in range(0, len(frame)):
reminder[i] = 0 if frame[i] == activeDivisor[i] else 1;
for i in range(0, len(frame)-1):
frame[i] = reminder[i+1];
if (pointer< len(dividend)):
frame[len(frame)-1] = dividend[pointer];
pointer = pointer +1;
crc = '';
for i in range(1, len(reminder)):
crc = crc + str(reminder[i]);
return crc;
import socket
import time
#print("start")
sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server_address=('199.223.115.24',9991)
with open('umdlogo.jpg','rb') as f:
buff=f.read()
#print(buff)
#print("buff",buff)
message=['{:02X}'.format(b) for b in buff]
#print("msg",message)
result=bytes([int(h,16) for h in message])
#print("res",result)
header = "01111110"
#header = bytes(int(header,16))
#print(len(result))
#with open('1.jpg','wb') as f:
# f.write(result)
count = 0
div = [1,1,1,0,1]
err = 0
i = 0
total = 0
finaldata = ""
while i < 73:
total = total + 1
datapck = [header]
packet=buff[0 + count:128 + count]
#print(len(packet))
#if i == 0:
# print(packet)
hpck=['{0:b}'.format(p) for p in packet]
framecounter = 0
for j in hpck:
if len(j) < 8:
temp = ""
for z in range(8 - len(j)):
temp = temp + "0"
temp = temp + j
hpck[framecounter] = temp
framecounter += 1
counter = '{0:b}'.format(i)
if len(counter) < 8:
temp = ""
for z in range(8 - len(counter)):
temp = temp + "0"
temp = temp + counter
counter = temp
datapck.extend(hpck)
datapck.append(counter)
#print(type(datapck[1]),datapck[1])
#print(datapck)
sndpack = []
for k in datapck:
sndpack.extend(list(k))
item = 0
for q in sndpack:
sndpack[item] = int(q)
item = item + 1
#print(sndpack)
crcs = calculateCRC(sndpack.copy(), div.copy(),"transmitter")
tmp = datapck.copy()
datapck = ['0000']
datapck.extend(tmp)
datapck.append(crcs)
datapck = ''.join(datapck)
#print(datapck, type(datapck))
seg = []
itertr = 0
while(len(datapck) > itertr):
seg.append(datapck[itertr : 8 + itertr])
itertr = itertr + 8
#print(len(seg),seg)
b = bytes([int(h,2) for h in seg])
#print(len(b))
#print(b)
sent=sock.sendto(b, server_address)
#receive from server
data,server = sock.recvfrom(2048)
#datahex = data.hex()
datahex=['{:02X}'.format(b) for b in data]
#print(datahex, type(datahex))
#print(len(datahex))
databin = ["{0:b}".format(int(a,16)) for a in datahex]
framecounter = 0
for j in databin:
if len(j) < 8:
temp = ""
for z in range(8 - len(j)):
temp = temp + "0"
temp = temp + j
databin[framecounter] = temp
framecounter += 1
#print(databin)
rcvdpack = []
for k in databin:
rcvdpack.extend(list(k))
item = 0
for l in rcvdpack:
rcvdpack[item] = int(l)
item = item + 1
#print(databin)
#print(rcvdpack)
crcr = calculateCRC(rcvdpack.copy(), div.copy(),"receiver")
if(crcr != '0000'):
err = err + 1
else:
count = count + 128
i = i + 1
temp = ""
for bit in rcvdpack:
temp += str(bit)
#print(type(temp), temp)
#print(len(temp))
finaldata += temp[12:-12]
#print(len(finaldata))
print(crcr)
#print(temp)
#print(finaldata)
time.sleep(0.1)
itertr = 0
seg = []
while(len(finaldata) > itertr):
seg.append(finaldata[itertr : 8 + itertr])
itertr = itertr + 8
#print(seg)
result=bytes([int(h,2) for h in seg])
#print(result)
print(len(result))
#print("res",result)
with open('reconstructed_image.jpg','wb') as f:
f.write(result)
print("Total Error:",err)
print("Total Iteration:",total)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
