將兩個字串或二進位制序列做按位與操作

2021-10-06 18:20:41 字數 1256 閱讀 9065

有時在設計演算法時我們需要將字母轉為二進位制然後進行操作。比較簡單的方法是將字母轉為ascii碼再做與或非的操作:

a =

'qwerty'

b ='asdfgh'

tmp =

# 輸出兩個字串按位做與操作後的二進位制序列

for i in

range

(len

(a))

: tmp.

(bin

(ord

(a[i])&

ord(b[i]))

.replace

('0b',''

))res =''.

join

(tmp)

print

(res)

# 輸出兩個字串按位做與操作後形成的新字串

for i in

range

(len

(a))

: tmp.

(chr

(ord

(a[i])&

ord(b[i]))

.replace

('0b',''

))res =''.

join

(tmp)

print

(res)

如果資料一開始就是二進位制形式,那麼要逐位運算,注意邏輯運算子& | ~ ^的運算元須為整數,所以要先用int轉換。但是注意不能將整個二進位制序列直接轉為整數,否則數字就變了,比如二進位制序列 10010 實際表示18,但直接轉為整數就成了一萬零一十。

a =

'011001'

b ='101011'

res =

''# 輸出兩個二進位制序列按位與操作後的新二進位制序列

for i in

range

(len

(a))

: res +=

str(

int(a[i])&

int(b[i]))

print

(res)

# 輸出兩個二進位制序列按位與操作後的二進位制序列對應的整數

for i in

range

(len

(a))

: res +=

str(

int(a[i])&

int(b[i]))

print

(int

(res, base=2)

)

二進位制求和 兩個字串表示二進位制的數字

現獲取道兩個字串長度最長的n,將char型別轉化為int型別,設定car來接收進製,然後迴圈之後,再判斷car是否為1,如果為1,用stringbuilde型別來接收,最後在反轉一下,呼叫tostring方法返回。package com.lhb.offer author lhb date 2022 ...

將截斷字串或二進位制資料 語句終止

1 今天執行 alter table tblvainfo alter column id varchar not null 時候出現 訊息8152,級別16,狀態14,第1 行 將截斷字串或二進位制資料。語句已終止。查閱後知道,是原來我在修改字段長度的時候表中有資料,如果這些資料很重要,可以講這些資...

MSSQL 將截斷字串或二進位制資料問題的解決方法

地tqsad圖資料存放在sqlserver 2008中,使用maptqsadxtreme7 開發時,使用feature.update 方法時出錯的提示包含 mssql tqsad將截斷字串或二進位制資料 主要原因就是給某個字段賦值時,內容大於欄位的長度或型別不符造成的 解決方法 乙個是修改資料庫字段...