복붙노트

[PYTHON] 이진 문자열에서 16 진수로 파이썬 변환

PYTHON

이진 문자열에서 16 진수로 파이썬 변환

파이썬에서 이진 문자열을 해당 16 진수 값으로 변환하려면 어떻게해야합니까?

0000 0100 1000 1101을 가지고 있고 048D를 얻고 싶습니다. 저는 Python 2.6을 사용하고 있습니다.

해결법

  1. ==============================

    1.int는 밑이 2이고 hex가 주어진다.

    int는 밑이 2이고 hex가 주어진다.

    >>> int('010110', 2)
    22
    >>> hex(int('010110', 2))
    '0x16'
    >>> 
    
    >>> hex(int('0000010010001101', 2))
    '0x48d'
    

    int의 의사 :

    16 진수의 문서 :

  2. ==============================

    2.

    bstr = '0000 0100 1000 1101'.replace(' ', '')
    hstr = '%0*X' % ((len(bstr) + 3) // 4, int(bstr, 2))
    
  3. ==============================

    3.파이썬의 binascii 모듈 사용

    파이썬의 binascii 모듈 사용

    import binascii
    
    binFile = open('somebinaryfile.exe','rb')
    binaryData = binFile.read(8)
    
    print binascii.hexlify(binaryData)
    
  4. ==============================

    4.선행 0을 무시하지 않고 이진수를 16 진수로 변환 :

    선행 0을 무시하지 않고 이진수를 16 진수로 변환 :

    다음과 같이 format () 내장 함수를 사용할 수 있습니다.

    "{0:0>4X}".format(int("0000010010001101", 2))
    
  5. ==============================

    5.지저분한 연결 및 패딩 사용 :

    지저분한 연결 및 패딩 사용 :

    '{:0{width}x}'.format(int(temp,2)), width=4)
    

    패딩이있는 16 진수 표현을 보존합니다.

  6. ==============================

    6.그들은 4로 그룹화되고 공백으로 분리된다고 가정합니다. 이것은 선행 0을 보존합니다.

    그들은 4로 그룹화되고 공백으로 분리된다고 가정합니다. 이것은 선행 0을 보존합니다.

    b = '0000 0100 1000 1101'
    h = ''.join(hex(int(a, 2))[2:] for a in b.split())
    
  7. ==============================

    7.

    format(int(bits, 2), '0' + str(len(bits) / 4) + 'x')
    
  8. ==============================

    8.어떤 이유로 든 이러한 답변에 문제가 있었기 때문에 나 자신을 위해 몇 가지 도우미 기능을 작성 했으므로 내가했던 것처럼 문제가 있다면 이러한 시도를 해보십시오.

    어떤 이유로 든 이러한 답변에 문제가 있었기 때문에 나 자신을 위해 몇 가지 도우미 기능을 작성 했으므로 내가했던 것처럼 문제가 있다면 이러한 시도를 해보십시오.

    def bin_string_to_bin_value(input):
       highest_order = len(input) - 1
       result = 0
       for bit in input:
          result = result + int(bit) * pow(2,highest_order)
          highest_order = highest_order - 1
       return bin(result)
    
    def hex_string_to_bin_string(input):
       lookup = {"0" : "0000", "1" : "0001", "2" : "0010", "3" : "0011", "4" : "0100", "5" : "0101", "6" : "0110", "7" : "0111", "8" : "1000", "9" : "1001", "A" : "1010", "B" : "1011", "C" : "1100", "D" : "1101", "E" : "1110", "F" : "1111"}
       result = ""
       for byte in input:
          result =  result + lookup[byte]
       return result
    def hex_string_to_hex_value(input):
       bin_string = hex_string_to_bin_string(input)
       bin_value = bin_string_to_bin_value(bin_string)
       return hex(int(bin_value, 2))
    

    그들은 잘 작동하는 것 같습니다.

    print hex_string_to_hex_value("FF")
    print hex_string_to_hex_value("01234567")
    print bin_string_to_bin_value("11010001101011")
    

    결과 :

    0xff
    0x1234567
    0b11010001101011
    
  9. ==============================

    9.hexlify 함수를 사용하는 python3 :

    hexlify 함수를 사용하는 python3 :

    import binascii
    def bin2hex(str1):
        bytes_str = bytes(str1, 'utf-8')
        return binascii.hexlify(bytes_str)
    
    a="abc123"
    c=bin2hex(a)
    c
    

    다시 줄 것입니다 :

    b'616263313233'
    

    그리고 당신은 그것의 문자열을 얻을 수 있습니다 :

    c.decode('utf-8')
    

    제공 :

    '616263313233'
    
  10. ==============================

    10.

     x = int(input("press 1 for dec to oct,bin,hex \n press 2 for bin to dec,hex,oct \n press 3 for oct to bin,hex,dec \n press 4 for hex to bin,dec,oct \n"))
    
    
       if x is 1:
    
      decimal =int(input('Enter the decimal number: '))
    
      print(bin(decimal),"in binary.")
     print(oct(decimal),"in octal.")
        print(hex(decimal),"in hexadecimal.")
    
          if x is 2:
    
           binary = input("Enter number in Binary Format: ");
    
      decimal = int(binary, 2);
      print(binary,"in Decimal =",decimal);
      print(binary,"in Hexadecimal =",hex(decimal));
      print(binary,"in octal =",oct(decimal));
    
        if x is 3:
    
          octal = input("Enter number in Octal Format: ");
    
          decimal = int(octal, 8);
          print(octal,"in Decimal =",decimal);
          print(octal,"in Hexadecimal =",hex(decimal));
          print(octal,"in Binary =",bin(decimal));
    
              if x is 4:
    
             hex = input("Enter number in hexa-decimal Format: ");
    
          decimal = int(hex, 16);
            print(hex,"in Decimal =",decimal);
          print(hex,"in octal =",oct(decimal));
            print(hex,"in Binary =",bin(decimal));
    
  11. ==============================

    11.

    >>> import string
    >>> s="0000 0100 1000 1101"
    >>> ''.join([ "%x"%string.atoi(bin,2) for bin in s.split() ]  )
    '048d'
    >>>
    

    또는

    >>> s="0000 0100 1000 1101"
    >>> hex(string.atoi(s.replace(" ",""),2))
    '0x48d'
    
  12. from https://stackoverflow.com/questions/2072351/python-conversion-from-binary-string-to-hexadecimal by cc-by-sa and MIT license