如何實現字串的位操作?

2021-09-26 02:31:49 字數 1136 閱讀 6217

在編寫定時頁面時,將7位二進位制數表示周一到週日的時鐘設定情況(周迴圈)。

即 0000001 表示周一

0000010 表示周二

0000100 表示週三

0001000表示周四

0000011 則表示周一和周二都設定了該定時。

以此類推。

在滿足兩個定時不能在同一天的需求,首先就想到 通過判斷兩個定時的周迴圈進行位相與,如果相與的結果為false,則說明這兩個定時的不在同一天。如果相與的結果為true,則這兩個定時是衝突的。

除錯了之後,發現結果出錯,原因表示周定時的7位二進位制數為字串(string),而位相與 是資料(number)之間的運算子。

方法1:使用parsrint方法。

//定時互斥時

var a =『1000001』

var b=『1000001』

let flag =(parseint(a,2) &parseint(b,2))?true:false;

console.log(flag); //true

//定時不互斥

var a =『1000001』

var b=『0000100』

let flag =(parseint(a,2) &parseint(b,2))?true:false;

console.log(flag);

方法2:將字串轉換為陣列。

思路:先使用split方法將字串轉換成陣列,通過foreach方法遍歷兩個陣列,找出兩個陣列相同的部分,並儲存在空陣列between中。最後用include判斷陣列between中是否包含「1」。

var a =『1000001』

var b=『0000101』

var aa=a.split(』』); //[ 『1』, 『0』, 『0』, 『0』, 『0』, 『0』, 『1』 ]

var bb=b.split(』』); // [ 『0』, 『0』, 『0』, 『0』, 『1』, 『0』, 『0』 ]

var between =; //定義乙個空陣列

bb.foreach((item,indx)=>) // [ 『0』, 『0』, 『0』, 『0』, 『1』 ] 兩陣列中相同的部分

const flag= between.includes(『1』); //true

字串常用操作的實現

mystring.cpp 串採用定長順序儲存結構的基本操作 14個 sstring是陣列,故不需引用型別。串的定長順序儲存表示 include define maxstrlen 40 使用者可在255以內定義最大串長 1個位元組 typedef char sstring maxstrlen 1 0號...

字串操作函式實現

該函式的實現如下 void memcpy void dst,const void src,size t n return dst 該函式的實現如下 void memmove void dst,const void src,size t n 若dst的位址與src位址部分重疊 則從高位址開始複製 el...

如何實現字串翻轉?

strrev函式對英文很好用,直接可以實現字串翻轉,但是面對中文呢?肯定都是亂碼,對於這樣的問題有很多,比如strstr,substr等函式都是這樣的。還好php提供了mb 類的函式實現不同編碼 不同語言之間的相互轉換等操作。下面是我寫的php字串翻轉函式 mb 類的函式需要開啟乙個mb strin...