如何使二进制字符串长k位

时间:2016-10-27 02:55:44

标签: string file python-3.x input binary

所以函数的作用是要求输入文件名,k位二进制字符串,并且n次写入k位二进制字符串。

def makeStrings():
    fileName = str(input("File Name: "))
    k = input("Bits Input: ")
    n = int(input("Number of Strings: "))
    outputFile = open(fileName, "w")
    counter = 0
    while (counter < n):
        randomNumber = random.randint(0, 9223372036854775808) #that big number is the max representation of a 64bit binary string
        binary = ('{:0' + str(k) + 'b}').format(randomNumber)
        outputFile.write(str(binary) + "\n")
        counter = counter + 1
    outputFile.close()   

所以我的问题是该功能有效。除了没有将二进制格式化为k位长之外,它确实做了它想做的事情。所以说例如我可以从随机数中得到任何二进制表示,但我只希望它们是k位长。所以,如果我使k = 8,它应该给我8位长的随机8位二进制字符串,或者如果我使k = 15,它应该给我随机的15位二进制字符串。

所以说我的输入是

>>> FileName: binarystext.txt #Name of the file
>>> 16 #number of bits for binary string
>>> 2 #number of times the k-bit binary string is written to the file

它应该写入以下文件

1111110110101010
0001000101110100

相同的表示将应用于任何位二进制字符串。 2,3,8,32等。

我想到可能将所有数字拆分为它们所代表的二进制形式,例如0-255代表8位,如果k = 8,我只会格式化它,但这意味着我必须做大量的次。

现在我得到的是

1010001100000111111001100010000001000000011010111

或其他一些非常长的二进制字符串。

2 个答案:

答案 0 :(得分:1)

问题是格式字符串中的widthminimum width of the field

  

width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容确定。

您可以限制随机修复此问题的数量:

randomNumber = random.randint(0, 2 ** k - 1)

答案 1 :(得分:0)

使用random.getrandbits()format string

[:digit:]