簡體   English   中英

如何將int的二進制與字符串的二進制相加

[英]How to add the binary of a int with the binary of a string

基本上,我希望能夠獲得32位int並將其二進制附加到字符串的二進制。 例如(IM將使用8位而不是32位)我想要255 +嗨11111111 + 0110100001101001 = 111111110110100001101001所以int保持其二進制值,我不在乎結果如何,我只是希望它能夠通過套接字發送數據。

(如果有人只知道如何做websocket握手,那將遍及websockets和新的sec-websocket-key來阻止黑客入侵)

謝謝 ! 我已經嘗試了好幾天了,我沒有人來訪問這種類型的網站以獲得答案

編輯

我一直被要求提供更多的信息,所以她是全部。 我已經連接到流端口的用戶,他已經向我發送了標頭,現在我需要回復以完成連接。 導入數據為

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 =將int2的字節追加到int1,然后將sk3中的字節追加

4)最后將MD5摘要全額

5)將最終結果與其他一些報頭一起發送到主機,如果它們匹配,則連接保持打開狀態

這就是所有需要發生的事情,我不知道該怎么做

完蛋了!

基本的答案都是正確的,如果我看起來有點粗魯,我想道歉,我不知道\\ x是(某種)含義的二進制。 但這確實可以治療。 一旦我完成連接發送等功能...我將其張貼在這里以及其他任何卡住的地方,再次謝謝!

就像是

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

應該做幾乎你想要的!

這是您要找的東西嗎? 不知道您是在追求十六進制還是摘要,而且我無法告訴您密鑰在何處開始和停止,這是可惜的,因為它們對空格敏感。

同樣在您的更新中,當我認為您的意思是“連接”時,您說的是“壓縮”數字。 我認為生成的鍵應該是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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM