Python 如何将int的二进制数与字符串的二进制数相加

Python 如何将int的二进制数与字符串的二进制数相加,python,websocket,Python,Websocket,基本上,我希望能够得到一个32位int,并将其二进制附加到字符串的二进制。 例如。 (我将使用8位而不是32位) 我想要 255+你好 11111111 + 0110100001101001 = 111111110110100001101001 所以int保存着它的二进制值,我不在乎它是怎么出来的,我只希望它能够通过套接字发送数据 (这是所有websocket和新的sec websocket密钥的全部,如果有人知道如何进行websocket握手的话,那就太好了) 谢谢!我已经试了好几天了,我不是

基本上,我希望能够得到一个32位int,并将其二进制附加到字符串的二进制。 例如。 (我将使用8位而不是32位) 我想要 255+你好 11111111 + 0110100001101001 = 111111110110100001101001 所以int保存着它的二进制值,我不在乎它是怎么出来的,我只希望它能够通过套接字发送数据

(这是所有websocket和新的sec websocket密钥的全部,如果有人知道如何进行websocket握手的话,那就太好了)


谢谢!我已经试了好几天了,我不是一个来这类网站获取答案的人

编辑 我被要求提供更多的信息,所以她是最重要的。我已经连接到一个流端口的用户,他已经给我发送了标题,现在我需要回复以完成连接。导入数据为

Sec-WebSocket-Key1:4@1 46546xW%0l 1 5“随机字符串遵循规则”(我将此称为sk1)

Sec-WebSocket-Key2:12998 5 Y3 1.P00“随机字符串遵循规则”(我将此称为sk2)

^n:ds[4U“随机字符串遵循规则”(我称之为sk3)

1) int1=将数字压缩到sk1中,并将其除以sk1中的空格数

2) int2=将数字压缩到sk2中,并将其除以sk2中的空格数

3) fullapend=Add将int2的字节追加到int1,然后将字节追加到sk3中

4) 最后是MD5摘要fullapend

5) 将最终结果与其他一些头一起发送到主机,如果它们匹配,则连接保持打开状态

这就是需要发生的一切,我不知道如何去做

完了! 嗯,基本的两个答案都是正确的,如果我看起来有点粗鲁,我想道歉,我不知道\x是一个(什么)意思的二进制。但这很管用。一旦我完成了连接发送等功能,我会将它发布在这里或其他任何卡住的地方,再次感谢!

类似的内容

struct.pack("!i%ds" % len(your_string), your_int, your_string)
应该做你想做的事情!

类似的事情

struct.pack("!i%ds" % len(your_string), your_int, your_string)

应该做你想做的事情!

这就是你要找的吗?不知道你要的是hexdigest还是digest,而且我不知道键的开始和停止位置,这很遗憾,因为它们对空格敏感

在你的更新中,你说“压缩”数字,而我认为你的意思是“连接”。我认为生成的键应该是bigendian,这就是我所做的

>>> import struct
>>> def processKey(data):
...     num = int("".join([x for x in data if x.isdigit()]))
...     spaces = data.count(' ')
...     return num / spaces
...
>>> key1 = '4 @1 46546xW%0l 1 5'
>>> key2 = '12998 5 Y3 1 .P00 '
>>> sk1 = processKey(key1)
>>> sk2 = processKey(key2)
>>> sk1
1036636503L
>>> sk2
259970620
>>> sk3 = "^n:ds[4U"
>>> fullappend = struct.pack('>ii%ds' % len(sk3),sk1,sk2,sk3)
>>> fullappend
'=\xc9\xd1W\x0f~\xd6<^n:ds[4U'
>>> len(fullappend)
16
>>> from hashlib import md5
>>> md5(fullappend).hexdigest()
'fd028b6b39ceb8e37f09b8e45556bbc4'
>>> md5(fullappend).digest()
'\xfd\x02\x8bk9\xce\xb8\xe3\x7f\t\xb8\xe4UV\xbb\xc4'
导入结构 >>>def processKey(数据): …num=int(“.”join([x表示数据中的x,如果x.isdigit()])) …空格=数据。计数(“”) …返回个/个空格 ... >>>键1='4@1 46546xW%0l 1 5' >>>键2='12998 5 Y3 1.P00' >>>sk1=进程键(键1) >>>sk2=进程键(键2) >>>sk1 1036636503L >>>sk2 259970620 >>>sk3=“^n:ds[4U” >>>fullappend=struct.pack('>ii%ds'%len(sk3),sk1,sk2,sk3) >>>全附加
'=\xc9\xd1W\x0f~\xd6这就是你要找的吗?不知道你要的是hexdigest还是digest,我也不知道键的开始和停止位置,这很遗憾,因为它们对空格敏感

在你的更新中,你说“压缩”数字,而我认为你的意思是“连接”。我认为生成的键应该是bigendian,这就是我所做的

>>> import struct
>>> def processKey(data):
...     num = int("".join([x for x in data if x.isdigit()]))
...     spaces = data.count(' ')
...     return num / spaces
...
>>> key1 = '4 @1 46546xW%0l 1 5'
>>> key2 = '12998 5 Y3 1 .P00 '
>>> sk1 = processKey(key1)
>>> sk2 = processKey(key2)
>>> sk1
1036636503L
>>> sk2
259970620
>>> sk3 = "^n:ds[4U"
>>> fullappend = struct.pack('>ii%ds' % len(sk3),sk1,sk2,sk3)
>>> fullappend
'=\xc9\xd1W\x0f~\xd6<^n:ds[4U'
>>> len(fullappend)
16
>>> from hashlib import md5
>>> md5(fullappend).hexdigest()
'fd028b6b39ceb8e37f09b8e45556bbc4'
>>> md5(fullappend).digest()
'\xfd\x02\x8bk9\xce\xb8\xe3\x7f\t\xb8\xe4UV\xbb\xc4'
导入结构 >>>def processKey(数据): …num=int(“.”join([x表示数据中的x,如果x.isdigit()])) …空格=数据。计数(“”) …返回个/个空格 ... >>>键1='4@1 46546xW%0l 1 5' >>>键2='12998 5 Y3 1.P00' >>>sk1=进程键(键1) >>>sk2=进程键(键2) >>>sk1 1036636503L >>>sk2 259970620 >>>sk3=“^n:ds[4U” >>>fullappend=struct.pack('>ii%ds'%len(sk3),sk1,sk2,sk3) >>>全附加
“=\xc9\xd1W\x0f~\xd6您是否尝试过
struct.pack
?“我不是来这类网站获取答案的人”…如果你是的话,你现在可能已经有了解决方案了。;-)所以这不仅仅是一个当你遇到麻烦时问问题的地方。这是一个学习的地方。看到其他程序员的问题和提出的解决方案是非常有启发性的。所以,欢迎你,不要让骄傲限制你的自我提高。你试过
struct.pack
?“我不是来这类网站寻求答案的人"…如果你是的话,你现在可能已经有了解决方案了。;-)所以这不仅仅是一个当你遇到麻烦时问问题的地方。这是一个学习的地方。看到其他程序员的问题和提出的解决方案是非常有启发性的。所以,欢迎你,不要让骄傲限制了你的自我提高。这很好,但在实时python终端中是这样的如果我通过internet/socket/tcp发送数据类型,那么数据类型就是一个字符串,不管它叫什么,它不会发送\x04\x84等…没有它的actaul值。实际上struct.pack返回一个包含给定元素二进制值的字符串,我已经用了很多时间通过套接字发送数据。发送\x04\x84并不是一个问题,还是它?@user416186:您使用的是什么版本的python?
“它到底叫什么?”
对于程序员来说通常是一个重要的细节。你可能想用你目前掌握的知识来扩展你的问题。这很好,但在实时python终端中,如果我通过internet/socket/tcp发送数据类型,它会说数据类型是字符串,不管它叫什么,它不会发送\x04\x84等等……没有它的actaul值。实际上struct.pack retURN是一个字符串,包含给定元素的二进制值,我已经用了很多时间通过套接字发送数据。发送\x04\x84不是什么问题,或者是吗?@user416186:您使用的python版本是什么?
“它到底叫什么?”
对于程序员来说通常是一个重要的细节。您可能想用您目前掌握的知识来扩展您的问题。