相关疑难解决方法(0)

将base-2二进制数字符串转换为int

我只想将base-2二进制数字串转换为int,如下所示:

>>> '11111111'.fromBinaryToInt()
255
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中执行此操作?

python

269
推荐指数
6
解决办法
35万
查看次数

在python中将整数转换为二进制

为了将整数转换为二进制,我使用了以下代码:

>>> bin(6)  
'0b110'
Run Code Online (Sandbox Code Playgroud)

什么时候擦除'0b',我用这个:

>>> bin(6)[2:]  
'110'
Run Code Online (Sandbox Code Playgroud)

我能做些什么,如果我想表明6作为00000110代替110

python binary integer

159
推荐指数
9
解决办法
25万
查看次数

转换为二进制并在Python中保持前导零

我正在尝试使用Python中的bin()函数将整数转换为二进制.但是,它总是删除我实际需要的前导零,这样结果总是8位:

例:

bin(1) -> 0b1

# What I would like:
bin(1) -> 0b00000001
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

python binary formatting bitwise-operators

129
推荐指数
6
解决办法
13万
查看次数

在python中将十进制转换为二进制

我可以使用python中的任何模块或函数将十进制数转换为二进制数吗?我能够使用int('[binary_value]',2)将二进制转换为十进制,所以任何方法都可以在不编写代码的情况下自行完成

python binary decimal

127
推荐指数
7
解决办法
40万
查看次数

如何使`bin(30)`返回'00011110`而不是'0b11110`?

bin(30)的输出中"b"代表什么:"0b11110"?有什么办法可以摆脱这个"b"吗?如何让bin()的输出始终返回标准的8位数输出?

python

32
推荐指数
4
解决办法
5万
查看次数

搜索最不同于一组位串的位串

我有一组位串:({'0011', '1100', '1110'}一组中的所有位串都具有相同的长度)。

我想快速找到与集合最大相似度最小的相同长度的位串。最大相似度可以这样计算:

def max_similarity(bitstring, set):
    max = 0
    for item in set:
        temp = 0
        for i in range(len(bitstring)):
            if bitstring[i] == item[i]:
                temp += 1
        if temp > max:
            max = temp
    return max
Run Code Online (Sandbox Code Playgroud)

我知道我可以遍历该长度的所有可能的位串,计算每个位的最大相似度,最后保留这些迭代中的最小者。但这解决了O(2 ^ n)中的问题。我想知道是否有人看到任何更快的选择。

我一直在玩Pythons XOR:

def int2bin(integer, digits):
    if integer >= 0:
        return bin(integer)[2:].zfill(digits)
    else:
        return bin(2**digits + integer)[2:]


def XOR(bitset):  
    intset = [int('{}'.format(bitstring), 2) for bitstring in bitset]

    digits = len(bitset.pop())

    if len(intset) == 1:
        return int2bin(~intset.pop(), digits)        
    else:
        curr …
Run Code Online (Sandbox Code Playgroud)

python search bit hamming-distance python-3.x

10
推荐指数
1
解决办法
305
查看次数

Python:在整数的二进制表示中找到最长的二进制间隙

我想知道我的实施是否有效.我试图使用python找到解决该问题的最简单,最简单的解决方案.

def count_gap(x):
    """
        Perform Find the longest sequence of zeros between ones "gap" in binary representation of an integer

        Parameters
        ----------
        x : int
            input integer value

        Returns
        ----------
        max_gap : int
            the maximum gap length

    """
    try:
        # Convert int to binary
        b = "{0:b}".format(x)
        # Iterate from right to lift 
        # Start detecting gaps after fist "one"
        for i,j in enumerate(b[::-1]):
            if int(j) == 1:
                max_gap = max([len(i) for i in b[::-1][i:].split('1') if i])
                break
    except ValueError: …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

5
推荐指数
3
解决办法
5068
查看次数

如何使用f“”字符串而不是.format()打印二进制数字?

要将某些数字打印为二进制格式,我们只需使用.format()方法,如下所示:

# Binary
for i in range(5+1):
    print("{0:>2} in binary is {0:>08b}".format(i))

0 in binary is 00000000
1 in binary is 00000001
2 in binary is 00000010
3 in binary is 00000011
4 in binary is 00000100
5 in binary is 00000101
Run Code Online (Sandbox Code Playgroud)

对于其他格式(十六进制和八进制)的打印也是如此,只需要将后者的花括号替换为我们要打印的数字即可。但是,有没有办法使用新f""字符串替换.format()命令?我知道这看似微不足道,但我在试用新功能时不胜其烦,此外还f""使代码更短,更易读。

for i in range(5+1):
    print(f'{0:>2} in binary is {0:>08b}')
# This prints out just 0s
Run Code Online (Sandbox Code Playgroud)

python binary python-3.x f-string

2
推荐指数
1
解决办法
1078
查看次数

打印二进制值Python

我已经尝试将其转换为字符串,添加0到它,但它仍然只显示十进制值,我怎样才能让它显示它的二进制值?

如果我尝试这个:

binary = 0b010
print(binary)
Run Code Online (Sandbox Code Playgroud)

或这个:

binary = 0b010
print(str(binary))
Run Code Online (Sandbox Code Playgroud)

输出如下:

2
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个:

binary = 0b010
print("{0:b}".format(binary))
Run Code Online (Sandbox Code Playgroud)

输出如下:

10
Run Code Online (Sandbox Code Playgroud)

期望的输出:

010
Run Code Online (Sandbox Code Playgroud)

不好的部分是它没有填充左边的 0 的数量,它给了我一个10我想要的输出010,但我希望它显示我输入的任何二进制可能的 0 的数量。

我是Python新手,但每次我寻找如何做到这一点时,在我看来,它只是从整数转换为二进制并显示它。但我无法使用该bin()功能,所以我直接在这里询问,谢谢您的理解。

python

2
推荐指数
1
解决办法
1万
查看次数

如何计算数字的设置位总数

  • 给定一个正整数 A,任务是计算从 1 到 A 的所有数字的二进制表示中设置位的总数。
 A = 3
 DECIMAL    BINARY  SET BIT COUNT
    1          01        1
    2          10        1
    3          11        2
Run Code Online (Sandbox Code Playgroud)

1 + 1 + 2 = 4

  • 我得到了正确的输出

代码如下

def solve(A):
     ad = ''
     for i in range(A + 1):
         ad += str(bin(i).replace('ob',''))
     return ad.count('1')
Run Code Online (Sandbox Code Playgroud)

使用按位

  def solve(A):
        count = 0
        for i in range(A + 1):
            while i > 0:
                i= i & (i-1)
                count += 1
        return (count)
Run Code Online (Sandbox Code Playgroud)
  • 在这两种情况下,我都得到 Time Limit Exceeded.

python time-complexity

2
推荐指数
1
解决办法
107
查看次数

将 int 转换为带有额外内容的 32 位二进制行

用户输入一个 8 个字符的字符串,然后将其转换为字符串并放入要播放的数组中。

有了这 8 位数字,我希望能够将它们转换为 32 位二进制,例如

  • 0000 0000 0000 0000 0000 0000 0000 0000

整数 = 12,345,678

  • 0000 0000 1011 1100 0110 0001 0100 1110

整数 = -10,000,000

  • 1111 1111 0110 0111 0110 1001 1000 0000

     System.out.print("Please enter an 8 digit number");
     System.out.println();
     Scanner user_input = new Scanner( System.in );
     StudentID = user_input.nextLine();
     sID = Integer.parseInt(StudentID);
     String ss[] = StudentID.split("");
     StudentID = Integer.toBinaryString(sID);   
    
        while(loop >= 0){
          d[loop] = Integer.parseInt(ss[loop]) ;
          loop--;
        }
    
    Run Code Online (Sandbox Code Playgroud)

我试过使用“StudentID = Integer.toBinaryString(sID);” 然而,它不会产生加 0 来组成 …

java binary twos-complement

1
推荐指数
1
解决办法
6329
查看次数