• 11-04-2020, 23:07:15
    #1
    Arkadaşlar merhaba,
    Bir projemden dolayı bir kodu inceliyorum python dilinde yazılmış bir kod fakat ben python bilmiyorum. Kodu cmd üzerinden çalıştırdığımda
    Alıntı
    "Traceback (most recent call last):
    File "encoder.py", line 83, in <module>
    main()
    File "encoder.py", line 62, in main
    ol_bytes = struct.pack(">Hc",offset_and_length,char)
    struct.error: char format requires a bytes object of length 1"
    Hatası alıyorum yardım edebilecek arkadaşlar yazarsa çok sevinirim. Bu arada kodu githubdan buldum kullanırken de kod sahibinin önerdiği şekilde kullanıyorum fakat hata nerede anlayamadım.

    Kod github : https://github.com/julyanserra/Basic...ter/encoder.py

  • 11-04-2020, 23:20:03
    #2
    ">Hc" big endian türünde 3 uzunluğunda olduğu için toplamda giren verilerin bu koşulları sağlaması lazım, H = unsigned short ve c = char temsil etmekte programda unsigned short binary koduna çevirmek için verdiği koşullar sağlanmış hocam yani 2 üssü 16 - 1 aralığında fakat char 1 karakter uzunluğunda olmalı programın binary'e çevirmesi için char 1 den fazla veya az olduğu için hata veriyor
    struct.pack(">Hc",offset_and_length,char) bu kısmı struct.pack(">Hc",offset_and_length,char[0]) şeklinde çevirip deneyin belki işe yarar




    ol_bytes = struct.pack(">Hc",offset_and_length); ol_bytes += ''.join([ord(c) for c in char])
    bu şekilde de değişip deneyin ama kodları görmeden böyle konuşmak çok doğru değil hocam
  • 11-04-2020, 23:26:24
    #3
    nochs adlı üyeden alıntı: mesajı görüntüle
    ">Hc" big endian türünde 3 uzunluğunda olduğu için toplamda giren verilerin bu koşulları sağlaması lazım, H = unsigned short ve c = char temsil etmekte programda unsigned short binary koduna çevirmek için verdiği koşullar sağlanmış hocam yani 2 üssü 16 - 1 aralığında fakat char 1 karakter uzunluğunda olmalı programın binary'e çevirmesi için char 1 den fazla veya az olduğu için hata veriyor
    struct.pack(">Hc",offset_and_length,char) bu kısmı struct.pack(">Hc",offset_and_length,char[0]) şeklinde çevirip deneyin belki işe yarar




    ol_bytes = struct.pack(">Hc",offset_and_length); ol_bytes += ''.join([ord(c) for c in char])
    bu şekilde de değişip deneyin ama kodları görmeden böyle konuşmak çok doğru değil hocam
    deniyorum şimdi bu arada konuya kodların github linkini ekledim



    nochs adlı üyeden alıntı: mesajı görüntüle
    ">Hc" big endian türünde 3 uzunluğunda olduğu için toplamda giren verilerin bu koşulları sağlaması lazım, H = unsigned short ve c = char temsil etmekte programda unsigned short binary koduna çevirmek için verdiği koşullar sağlanmış hocam yani 2 üssü 16 - 1 aralığında fakat char 1 karakter uzunluğunda olmalı programın binary'e çevirmesi için char 1 den fazla veya az olduğu için hata veriyor
    struct.pack(">Hc",offset_and_length,char) bu kısmı struct.pack(">Hc",offset_and_length,char[0]) şeklinde çevirip deneyin belki işe yarar




    ol_bytes = struct.pack(">Hc",offset_and_length); ol_bytes += ''.join([ord(c) for c in char])
    bu şekilde de değişip deneyin ama kodları görmeden böyle konuşmak çok doğru değil hocam
    denedim de hocam yine hata aldım acaba kodu çalıştırma şeklimde hata var mı ----> python encoder3.py "ded.txt" "1024" tırnaklar ya da başka bir şeyden
  • 11-04-2020, 23:41:11
    #4
    hocam python2.7 de denedim sıkıntı yok python3 de sizdeki hatayı verdi python3 gerekli diyorsanız port etmenize yardım edebilirim
  • 11-04-2020, 23:51:25
    #5
    nochs adlı üyeden alıntı: mesajı görüntüle
    hocam python2.7 de denedim sıkıntı yok python3 de sizdeki hatayı verdi python3 gerekli diyorsanız port etmenize yardım edebilirim
    Yani bir gereklilik yok hocam ben kodu inceleyip nasıl çalıştığını görmek istiyorum aslında. Pythonu da sanırım en son sürüm indirdim bir 2.7 indirip deneyeyim şimdi. Çok teşekkür ederim