Quiero adaptar este código a otro

Iniciado por Meta, 4 Julio 2020, 00:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Buenas:

Teniendo un código de Python 2.x, quiero adaptarlo a la consola C# si es posible. Si no, pues con Windows Form.
Ya no recuerdo casi nada de Python y quiero tenerlo en C#.

El código del Pyhon es este.
Código (python) [Seleccionar]
import os, sys, tkFileDialog,Tkinter
     
root = Tkinter.Tk()
root.withdraw()
     
formats = [ ('Roms Super Nintendo SMC','.smc'),('Roms Super Nintendo SFC','.sfc'),('Fichier Bin','.bin'),('Roms Super Nintendo','.smc .sfc .bin') ]
     
input = tkFileDialog.askopenfile(parent=root,mode='rb',filetypes=formats,
                                 title='Seleccione el archivo para intercambiar bin HI a LO como A16->A15, A17->A16...A21->A20 y A15->21')
if not input:
    print "Error: no se puede abrir el archivo."
    sys.exit()
     
output = tkFileDialog.asksaveasfile(parent=root,mode='wb',filetypes=formats,title='Crear nombre de archivo de salida.')
if not output:
    print "Error: no se puede crear el archivo de salida."
    sys.exit()
     
     
    # reading input file to a byte array
    data = bytearray(input.read())
     
    # calculating rom size in 2 exponants
    expsize = 0
    bytesize = len(data)
    while bytesize > 1:
            expsize += 1
            bytesize = bytesize // 2
     
    # init a proper size empty bytearray
    buffer = bytearray()
    for i in range(2**expsize): buffer.append(0)
     
    # let's do the swap
    count = 0
    for i in range(len(data)):
            addr = (i & 0x7fff) + ((i & 0x008000) << (expsize - 16)) + ((i & 0x010000) >> 1) + ((i & 0x020000) >> 1) + ((i & 0x040000) >> 1)
            + ((i & 0x080000) >> 1) + ((i & 0x100000) >> 1) + ((i & 0x200000) >> 1)
            if addr != i: count += 1
            buffer[addr] = data[i]
    print "Intercambiadas %s (%s) direcciones" % (count, hex(count))
     
    # writing output file
    output.write(buffer)
     
    # close file handles
    input.close()
    output.close()


Es cierto que con Visual Studio Community 2019 me ejecuta bien el Python, pero dependo de compilador y con C# no.

Esto parece una tarea muy complicada.

Muchas gracias.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/