精华内容
下载资源
问答
  • python - 将十六进制转换二进制我有ABC123EFFF。我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零)。怎么样?18个解决方案92 votes为了解决左侧尾随零问题:my_hexdata = ...

    python - 将十六进制转换为二进制

    我有ABC123EFFF。

    我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零)。

    怎么样?

    18个解决方案

    92 votes

    为了解决左侧尾随零问题:

    my_hexdata = "1a"

    scale = 16 ## equals to hexadecimal

    num_of_bits = 8

    bin(int(my_hexdata, scale))[2:].zfill(num_of_bits)

    它将给出00011010而不是修剪版本。

    Onedinkenedi answered 2019-09-14T20:22:09Z

    52 votes

    import binascii

    binary_string = binascii.unhexlify(hex_string)

    binascii.unhexlify

    返回由指定为参数的十六进制字符串表示的二进制数据。

    rahul answered 2019-09-14T20:22:45Z

    40 votes

    bin(int("abc123efff", 16))[2:]

    Glenn Maynard answered 2019-09-14T20:23:02Z

    29 votes

    >>> bin( 0xABC123EFFF )

    '0b1010101111000001001000111110111111111111'

    Simple answered 2019-09-14T20:23:26Z

    24 votes

    将hex转换为二进制

    我有ABC123EFFF。

    我想拥有001010101111000001001000111110111111111111(即二进制文件  再版。 比方说,42位数和前导零。

    简短回答:

    Python 3.6中的新f字符串允许您使用非常简洁的语法执行此操作:

    >>> f'{0xABC123EFFF:0>42b}'

    '001010101111000001001000111110111111111111'

    或者用语义来打破它:

    >>> number, pad, rjust, size, kind = 0xABC123EFFF, '0', '>', 42, 'b'

    >>> f'{number:{pad}{rjust}{size}{kind}}'

    '001010101111000001001000111110111111111111'

    答案很长:

    你实际上说的是你有一个十六进制表示的值,并且你想用二进制表示一个等价的值。

    等价值是一个整数。 但是你可以从一个字符串开始,要以二进制形式查看,你必须以字符串结尾。

    将十六进制转换为二进制,42位和前导零?

    我们有几种直接的方法可以实现这一目标,而无需使用切片。

    首先,在我们可以完成任何二进制操作之前,转换为int(我假设这是一个字符串格式,而不是文字):

    >>> integer = int('ABC123EFFF', 16)

    >>> integer

    737679765503

    或者我们可以使用以十六进制形式表示的整数文字:

    >>> integer = 0xABC123EFFF

    >>> integer

    737679765503

    现在我们需要用二进制表示来表示整数。

    使用内置函数,int.to_bytes

    然后传递给int.to_bytes:

    >>> format(integer, '0>42b')

    '001010101111000001001000111110111111111111'

    这使用格式规范的迷你语言。

    为了打破这一点,这是它的语法形式:

    [[fill]align][sign][#][0][width][,][.precision][type]

    为了使其符合我们的需求,我们只排除了我们不需要的东西:

    >>> spec = '{fill}{align}{width}{type}'.format(fill='0', align='>', width=42, type='b')

    >>> spec

    '0>42b'

    然后传递给格式化

    >>> bin_representation = format(integer, spec)

    >>> bin_representation

    '001010101111000001001000111110111111111111'

    >>> print(bin_representation)

    001010101111000001001000111110111111111111

    字符串格式(模板),int.to_bytes

    我们可以使用int.to_bytes方法在字符串中使用它:

    >>> 'here is the binary form: {0:{spec}}'.format(integer, spec=spec)

    'here is the binary form: 001010101111000001001000111110111111111111'

    或者只是将规范直接放在原始字符串中:

    >>> 'here is the binary form: {0:0>42b}'.format(integer)

    'here is the binary form: 001010101111000001001000111110111111111111'

    字符串使用新的f字符串格式化

    让我们演示新的f字符串。 他们使用相同的迷你语言格式规则:

    >>> integer = 0xABC123EFFF

    >>> length = 42

    >>> f'{integer:0>{length}b}'

    '001010101111000001001000111110111111111111'

    现在让我们将此功能放入一个函数中以鼓励可重用性:

    def bin_format(integer, length):

    return f'{integer:0>{length}b}'

    现在:

    >>> bin_format(0xABC123EFFF, 42)

    '001010101111000001001000111110111111111111'

    在旁边

    如果您实际上只想将数据编码为内存或磁盘上的字节字符串,则可以使用int.to_bytes方法,该方法仅在Python 3中可用:

    >>> help(int.to_bytes)

    to_bytes(...)

    int.to_bytes(length, byteorder, *, signed=False) -> bytes

    ...

    由于42位除以每字节8位等于6个字节:

    >>> integer.to_bytes(6, 'big')

    b'\x00\xab\xc1#\xef\xff'

    Aaron Hall answered 2019-09-14T20:26:37Z

    13 votes

    "{0:020b}".format(int('ABC123EFFF', 16))

    Markus answered 2019-09-14T20:26:54Z

    9 votes

    这是使用bit fiddling生成二进制字符串的一种相当原始的方法。

    要理解的关键点是:

    (n & (1 << i)) and 1

    如果设置n的第i位,则将生成0或1。

    import binascii

    def byte_to_binary(n):

    return ''.join(str((n & (1 << i)) and 1) for i in reversed(range(8)))

    def hex_to_binary(h):

    return ''.join(byte_to_binary(ord(b)) for b in binascii.unhexlify(h))

    print hex_to_binary('abc123efff')

    >>> 1010101111000001001000111110111111111111

    编辑:使用“new”三元运算符:

    (n & (1 << i)) and 1

    会成为:

    1 if n & (1 << i) or 0

    (哪个TBH我不确定它的可读性如何)

    John Montgomery answered 2019-09-14T20:27:49Z

    5 votes

    这是对Glen Maynard解决方案的轻微修改,我认为这是正确的方法。 它只是添加了填充元素。

    def hextobin(self, hexval):

    '''

    Takes a string representation of hex data with

    arbitrary length and converts to string representation

    of binary. Includes padding 0s

    '''

    thelen = len(hexval)*4

    binval = bin(int(hexval, 16))[2:]

    while ((len(binval)) < thelen):

    binval = '0' + binval

    return binval

    把它拉出课堂。 如果您使用的是独立脚本,请取出self,。

    RobotHumans answered 2019-09-14T20:28:20Z

    4 votes

    bin(int("abc123efff", 16))[2:]

    '1010101111000001001000111110111111111111'

    `bin(int("abc123efff", 16))[2:].zfill(50)`

    '00000000001010101111000001001000111110111111111111'

    (编号50将告诉zfill您要用零填充字符串,直到字符串长度为50。)

    Paulo answered 2019-09-14T20:28:45Z

    2 votes

    十六进制 - >十进制再十进制 - >二进制

    #decimal to binary

    def d2b(n):

    bStr = ''

    if n < 0: raise ValueError, "must be a positive integer"

    if n == 0: return '0'

    while n > 0:

    bStr = str(n % 2) + bStr

    n = n >> 1

    return bStr

    #hex to binary

    def h2b(hex):

    return d2b(int(hex,16))

    answered 2019-09-14T20:29:09Z

    2 votes

    用相应的4位二进制数字替换每个十六进制数字:

    1 - 0001

    2 - 0010

    ...

    a - 1010

    b - 1011

    ...

    f - 1111

    DmitryK answered 2019-09-14T20:29:33Z

    1 votes

    其他方式:

    import math

    def hextobinary(hex_string):

    s = int(hex_string, 16)

    num_digits = int(math.ceil(math.log(s) / math.log(2)))

    digit_lst = ['0'] * num_digits

    idx = num_digits

    while s > 0:

    idx -= 1

    if s % 2 == 1: digit_lst[idx] = '1'

    s = s / 2

    return ''.join(digit_lst)

    print hextobinary('abc123efff')

    ChristopheD answered 2019-09-14T20:29:53Z

    0 votes

    我添加了要填充到Onedinkenedi解决方案的位数的计算。 这是结果函数:

    def hextobin(h):

    return bin(int(h, 16))[2:].zfill(len(h) * 4)

    其中16是您要转换的基数(十六进制),4是您需要表示每个数字的位数,或者是数字的对数基数2。

    Edd answered 2019-09-14T20:30:25Z

    0 votes

    def conversion():

    e=raw_input("enter hexadecimal no.:")

    e1=("a","b","c","d","e","f")

    e2=(10,11,12,13,14,15)

    e3=1

    e4=len(e)

    e5=()

    while e3<=e4:

    e5=e5+(e[e3-1],)

    e3=e3+1

    print e5

    e6=1

    e8=()

    while e6<=e4:

    e7=e5[e6-1]

    if e7=="A":

    e7=10

    if e7=="B":

    e7=11

    if e7=="C":

    e7=12

    if e7=="D":

    e7=13

    if e7=="E":

    e7=14

    if e7=="F":

    e7=15

    else:

    e7=int(e7)

    e8=e8+(e7,)

    e6=e6+1

    print e8

    e9=1

    e10=len(e8)

    e11=()

    while e9<=e10:

    e12=e8[e9-1]

    a1=e12

    a2=()

    a3=1

    while a3<=1:

    a4=a1%2

    a2=a2+(a4,)

    a1=a1/2

    if a1<2:

    if a1==1:

    a2=a2+(1,)

    if a1==0:

    a2=a2+(0,)

    a3=a3+1

    a5=len(a2)

    a6=1

    a7=""

    a56=a5

    while a6<=a5:

    a7=a7+str(a2[a56-1])

    a6=a6+1

    a56=a56-1

    if a5<=3:

    if a5==1:

    a8="000"

    a7=a8+a7

    if a5==2:

    a8="00"

    a7=a8+a7

    if a5==3:

    a8="0"

    a7=a8+a7

    else:

    a7=a7

    print a7,

    e9=e9+1

    Harshit Gupta answered 2019-09-14T20:30:43Z

    0 votes

    我有一个短暂的希望帮助:-)

    input = 'ABC123EFFF'

    for index, value in enumerate(input):

    print(value)

    print(bin(int(value,16)+16)[3:])

    string = ''.join([bin(int(x,16)+16)[3:] for y,x in enumerate(input)])

    print(string)

    首先,我使用您的输入并枚举它以获取每个符号。 然后我将它转换为二进制并从第3个位置修剪到结束。 得到0的技巧是添加输入的最大值 - >在这种情况下总是16 :-)

    简短列表列出了连接方法。 请享用。

    John answered 2019-09-14T20:31:21Z

    -1 votes

    a = raw_input('hex number\n')

    length = len(a)

    ab = bin(int(a, 16))[2:]

    while len(ab)

    ab = '0' + ab

    print ab

    Ashwini answered 2019-09-14T20:31:39Z

    -1 votes

    import binascii

    hexa_input = input('Enter hex String to convert to Binary: ')

    pad_bits=len(hexa_input)*4

    Integer_output=int(hexa_input,16)

    Binary_output= bin(Integer_output)[2:]. zfill(pad_bits)

    print(Binary_output)

    """zfill(x) i.e. x no of 0 s to be padded left - Integers will overwrite 0 s

    starting from right side but remaining 0 s will display till quantity x

    [y:] where y is no of output chars which need to destroy starting from left"""

    khattanemu answered 2019-09-14T20:31:57Z

    -8 votes

    no=raw_input("Enter your number in hexa decimal :")

    def convert(a):

    if a=="0":

    c="0000"

    elif a=="1":

    c="0001"

    elif a=="2":

    c="0010"

    elif a=="3":

    c="0011"

    elif a=="4":

    c="0100"

    elif a=="5":

    c="0101"

    elif a=="6":

    c="0110"

    elif a=="7":

    c="0111"

    elif a=="8":

    c="1000"

    elif a=="9":

    c="1001"

    elif a=="A":

    c="1010"

    elif a=="B":

    c="1011"

    elif a=="C":

    c="1100"

    elif a=="D":

    c="1101"

    elif a=="E":

    c="1110"

    elif a=="F":

    c="1111"

    else:

    c="invalid"

    return c

    a=len(no)

    b=0

    l=""

    while b

    l=l+convert(no[b])

    b+=1

    print l

    warunn answered 2019-09-14T20:32:15Z

    展开全文
  • 长串16进制数据字符串转换二级制 public static void main(String[] args) throws Exception { // System.out.println(readTxt().replaceAll(" ", "")); String str = readTxt(); int length = str.length() / 2;...

    长串16进制数据字符串转换二级制

    public static void main(String[] args) throws Exception {
            //  System.out.println(readTxt().replaceAll(" ", ""));
            String str = readTxt();
            int length = str.length() / 2;
            List list = new ArrayList();
            if (length * 2 < str.length()) {
                length++;
            }
            String[] strs = new String[length];
            int j = 0;
            for (int i = 0; i < str.length(); i++) {
                if (i % 2 == 0) {
                    strs[j] = "" + str.charAt(i);
                } else {
                    strs[j] = strs[j] + "" + str.charAt(i);
                    j++;
                }
            }
            list.addAll(Arrays.asList(strs));
            OutputStream outputStream = new FileOutputStream(new File("d:/123.txt"));
            for (int i = 0; i < list.size(); i++) {
                int ii = Integer.valueOf(list.get(i).toString(), 16);//十六进制转换成十进制
                String bin = Integer.toBinaryString(ii);//十进制转换成二进制
                bin += " " + bin + " " + bin + "\n";//重复两遍数据
                byte[] bytes = bin.getBytes();
                for (int k = 0; k < bytes.length; k++) {
                    outputStream.write(bytes[k]);
                }
            }
            outputStream.close();
    
        }
         private static String readTxt() throws Exception {
            Reader inputStream = new FileReader("d:/image.txt");
            BufferedReader reader = new BufferedReader(inputStream);
            String str = "";
            StringBuilder builder = new StringBuilder();
    
            while ((str = reader.readLine()) != null) {
                builder.append(str);
            }
            return builder.toString();
        }
    

    image.txt中存放十六进制数据,先将十六进制数据读取成字符串,后将字符串以每两个隔开构成16进制数,后将十六进制数转换成十进制,再将十进制转换成二进制数据,这样就完成了十六进制转换成二进制。
    因需要,后续将二进制数据重复两遍构成一行数据进行输出到txt文件中

    展开全文
  • I'm trying to convert a binary I have in python (a gzipped protocol buffer object) to an hexadecimal string in a string escape fashion (eg. \xFA\x1C ..).I have tried bothrepr(.getvalue())as well as.ge...

    I'm trying to convert a binary I have in python (a gzipped protocol buffer object) to an hexadecimal string in a string escape fashion (eg. \xFA\x1C ..).

    I have tried both

    repr(.getvalue())

    as well as

    .getvalue().encode('string-escape')

    In both cases I end up with a string which is not made of HEX chars only.

    \x86\xe3$T]\x0fPE\x1c\xaa\x1c8d\xb7\x9e\x127\xcd\x1a.\x88v ...

    How can I achieve a consistent hexadecimal conversion where every single byte is actually translated to a \xHH format ? (where H represents a valid hex char 0-9A-F)

    解决方案

    The \xhh format you often see is a debugging aid, the output of the repr() applied to a string with non-ASCII codepoints. Any ASCII codepoints are left a in-place to leave what readable information is there.

    If you must have a string with all characters replaced by \xhh escapes, you need to do so manually:

    ''.join(r'\x{0:02x}'.format(ord(c)) for c in value)

    If you need quotes around that, you'd need to add those manually too:

    "'{0}'".format(''.join(r'\x{:02x}'.format(ord(c)) for c in value))

    展开全文
  • printf("十六进制->二进制\n"); int i,a,b,c,d,k; int x[3]; char m[3]={0,0,0},n[3]; printf("转换数(十六进制):"); scanf("%s",m); for(i=0;i;i++) { if(m[i]>='A'&&m[i]) { x[i]=10+m[i]-65; printf("%d\n",x...
  • 1.python自带IDE编辑器十六进制格式转换 (1)def py1(a): if len(a)%2 == 1: print ('changdu') return 0 result = '' tmp = '\\x' i = 0 while i < len(a): result = result + tmp + a[i:i+2] i = i+...

    1.python自带IDE编辑器十六进制格式转换

    (1)

    def Binary(a):
    	result=''
    	t='\\x'
    	i=0
    	if len(a)%2==1:
    		return 0
    		print('长度值')
    	while i<len(a):
    		result=result+t+a[i:i+2]
    		i=i+2
    	print(result)

    回车两下,出现>>>即可

    (2)a赋值

    a='十六进制值'

    回车一下,出现>>>即可

    (3)调用方法

    Binary(a)

    回车即可

     

    2.python十六进制转换二进制流

    (1)s赋值

    s=r'转换后的十六进制值'

    回车一下,出现>>>即可

    (2)使用eval函数

    b=eval('b'+'\''+s+'\'')

    回车一下,出现>>>即可

    (3)打印类型

    print(type(b))

    回车一下,出现>>>即可

    (4)转换二进制流,格式utf-8

    print(b.decode('utf-8','ignore'))

    回车一下,出现>>>即可

    (5)转换二进制流,格式GBK

    print(b.decode('GBK','ignore'))

    回车一下,出现>>>即可

    (6)转换成二进制流,格式ASCII

    print(b.decode('ASCII','ignore'))

     

    3.python自带IDE十六进制转换二进制流

    (1)

    def Binary(a):
    		result=''
    		t='\\x'
    		i=0
    		if len(a)%2==1:
    			return 0
    			print('长度值')
    		while i<len(a):
    			result=result+t+a[i:i+2]
    			i=i+2
    			s = result
    			b = eval('b' + '\'' + s + '\'')
    		print(result)
    		print(type(b))
    		print(b.decode('GBK', 'ignore'))

    回车两下,出现>>>即可

    (2)a赋值

    a='十六进制值'

    回车一下,出现>>>即可

    (3)调用方法

    Binary(a)

    回车即可

     

    4.pycharm十六进制转换二进制流

    代码段:

    a = '303533392e02303533393134343237393030202020303030313030303020202000000000303030303030303000303030303030323030e23a46c1a8e09a120000000010000081313936323330323730313030303635303831333536333030303030313230373130343933353030343734383130343933353132303731323037363031313035313030303032303630383932303130303030303839323031303030303337363233303237303130303036353038313335364433303132323230303030303030373337303030303030303030303030323132333435363738313233343536373839303132333435d6d0b9fad2f8c1aa4348494e4120554e494f4e5041592053494d554c41544f5220202020202020203135360000000000000000323430303030303030303030303030303132305f2a02015682027d00950500001800009a032012079c01019f02060000000000009f03060000000000009f101307020103a02000010a010000000000d0194b549f1a0201569f1e0832303033313233309f2608428424a3ea806c219f2701809f3303e098c09f34009f3501229f360247499f37040b7fbd48303237303030303036303030313030303030303030303034303232303030303231534d303136ed2653a53248a12f962e2886dd5ad4e530383134343237393030303433353143533232303030303034353033313030303030202020303030303030303030303030303030303030303244313930363945'
    
    class Binary():
    	def Binary(a):
    		result=''
    		t='\\x'
    		i=0
    		if len(a)%2==1:
    			return 0
    			print('长度值')
    		while i<len(a):
    			result=result+t+a[i:i+2]
    			i=i+2
    			s = result
    			b = eval('b' + '\'' + s + '\'')
    		print(result)
    		print(type(b))
    		print(b.decode('GBK', 'ignore'))
    
    if __name__ == '__main__':
        Binary.Binary(a)

    运行结果:

    展开全文
  • 全是干货数进制及其转换 (1)数位:是指数码在一个数中所处的位置。(2)基数:是指某个进制数中允许选用的基本数码的个数。(3)位权:是指在某种进位计数制中,每个数位上的数码所代表的数值的大小,等于在这个数位上的...
  • 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...
  • 一分为四例1 将(576.35)16转换成二进制数将十六进制数的每位数码依次用四位二进制数代替,即得:(576.35)16 =(0101 0111 0110.0011 0101)2 
  • * 将16进制转换成二进制 * * @param hexValue * @return */ public static String convertHexToBinary(String hexValue) { StringBuilder sb = new StringBuilder(); hexValue = getStringNoNull...
  • #coding=utf-8import reprint("十进制转换成二进制、八进制、十六进制")num = input("请输入一个十进制的整数:")pattern = re.compile(r'[^0-9]+')if(re.search(pattern,num)):print("输入的格式不正确")else:num = ...
  • 全局定义一定不要丢了全局定义base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)]二进制 to 十进制 : int(str,n=)def bin2dec(string_num):return str(int(string_num, ))十六进制 ...
  • 以前将十六进制转换成十进制,总是先将十六进制转换成二进制,然后再转换成十进制。今天看到一个题目:将一个十六进制的数转换成一个整数。在网上搜寻,发现除了这样转换以外,还可以像二进制转换成十进制一样,比如...
  • 展开全部八进制与十六进制之间的转换32313133353236313431303231363533e4b893e5b19e31333366303831有两种...例如一个十六进制数053977,将其转换成二进制001 010 011 100 101 110 111,再将该二进制转换为八进制,...
  • 思路:先把十六进制转换成二进制,二进制在转换成八进制 蓝桥杯总是超时,但是结果都是对的 import java.util.Scanner; import java.util.prefs.BackingStoreException; public class Main { public static...
  • 提示是先把十六进制转换成二进制,再把二进制转换成八进制,求大神帮忙!!
  • // 十六进制二进制 public String HToB(String a) { String b = Integer.toBinaryString(Integer.valueOf(toD(a, 16))); return b; } // 二进制十六进制 public String BToH(String a) { // 将二进制转为...
  • 十六进制 到 十进制使用 int() 函数 ,第一个参数是字符串 0Xff ,第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。 int(0xf,16)15二进制使用 int() 函数 ,第一个参数是字符串 '0Xff' ,第二...
  • 二进制①正整数:以25为例(25)10=(11001)B 当位数不够时,高位补零(比如八位时,写为00011001)②负整数:先将其对应的正整数转换成二进制,然后将二进制取反,最后对结果加一如:-25-->(25)10-->(11001)B-...
  • // 将4个二进制数转整数 for (int j = i * 4; j * 4 + 4; j++) { num ;// 左移 num |= (binary.charAt(j) - '0');// 或运算 } // 直接找到该整数对应的16进制,这里不用switch来做 sb.append(hexStr[num]); // ...
  • Java 中二进制转换成十六进制的两种实现方法每个字节转成16进制,方法1/***每个字节转成16进制,方法1**@paramresult*/privatestaticStringtoHex(byte[]result){StringBuffersb=newStringBuffer(result.length*2);...
  • Java 中二进制转换成十六进制的两种实现方法每个字节转成16进制,方法1/*** 每个字节转成16进制,方法1** @param result*/private static String toHex(byte[] result) {StringBuffer sb = new StringBuffer(result....
  • 进制转换成二进制十六进制的方法 十进制数转换成二进制数-般分为两个步骤,即整数部分的转换和小数部分的转换。 (1 )整数部分的转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1十dn-2x2n-2 +… d1x21十d0x20,...
  • Java 中二进制转换成十六进制的两种实现方法每个字节转成16进制,方法1/*** 每个字节转成16进制,方法1** @param result*/private static String toHex(byte[] result) {StringBuffer sb = new StringBuffer(result....
  • 进制转换成十六进制、八进制、二进制 举例验证十进制转二进制,十进制转换十六进制: 代码演示: #include <stdio.h> #include <stdlib.h> #include <string.h> void trans(char array[],int ...
  • 1、 十进制转换二进制 int x = 10; string s = Convert.ToString(x, 2);   2、 十进制转换为八进制 string s = Convert.ToString(x, 8);   3、 十进制转换十六进制 string s = Convert.ToString(x, 16...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,592
精华内容 1,036
关键字:

十六进制转换成二进制