字符串所占字節(jié)怎么算 字符串長度和字節(jié)數(shù)有什么關(guān)系?
字符串長度和字節(jié)數(shù)有什么關(guān)系?在純ASCII碼中,字節(jié)數(shù)=字符串長度=字符數(shù),因?yàn)槊總€(gè)字符有一個(gè)字節(jié)。在Unicode中,byte/2=字符串長度=字符數(shù),因?yàn)槊總€(gè)字符是2個(gè)字節(jié)。當(dāng)ASCII碼與其他
字符串長度和字節(jié)數(shù)有什么關(guān)系?
在純ASCII碼中,字節(jié)數(shù)=字符串長度=字符數(shù),因?yàn)槊總€(gè)字符有一個(gè)字節(jié)。在Unicode中,byte/2=字符串長度=字符數(shù),因?yàn)槊總€(gè)字符是2個(gè)字節(jié)。當(dāng)ASCII碼與其他雙字節(jié)字符系統(tǒng)混合時(shí),字節(jié)數(shù)等于ASCII字符數(shù)和雙字節(jié)字符數(shù)*2。很難知道如何計(jì)算繩子的長度。對(duì)于某些語言(如C),字符串的長度等于字節(jié)數(shù)。對(duì)于某些語言(如JS),字符串的長度等于字符數(shù)。
C中,字符串的長度和占用的存儲(chǔ)字節(jié)有什么區(qū)別?
長度是字符串中的字符數(shù)。例如,char*P=“1234”,那么P中的字符數(shù)是4,4是其長度。它也可以理解為strlen和wcslen對(duì)字符串的返回值。占用的存儲(chǔ)字節(jié)表示內(nèi)存中的字符串或上面的字符串占用的存儲(chǔ)空間。占用的存儲(chǔ)空間是5,包括一個(gè)空字節(jié),因此占用的字節(jié)數(shù)是5。因此,C樣式ASCII字符串的長度和字符數(shù)是不同的。除了C樣式的字符串(以空字節(jié)結(jié)尾的字符串),其他ASCII字符串具有相同的長度和存儲(chǔ)空間。例如,STL中字符串的內(nèi)存空間與字符的長度相同,因?yàn)樗皇褂每兆址麃順?biāo)識(shí)字符串的結(jié)尾。因此對(duì)于ASCII字符串,長度和字節(jié)數(shù)可能是相同的。對(duì)于寬字符wcharut或Unicode,字符的長度必須與字節(jié)數(shù)不同。wcharut s[]=l“1234”sizeof(s)為10,wcslen(s)為4。很簡單,這兩個(gè)概念也可以理解為sizeof和strlen或wcslen返回的長度。
字符串占多少字節(jié)?
1. 在ASCII碼中,一個(gè)英文字母(不分大小寫)占用一個(gè)字節(jié)的空間,而一個(gè)漢字占用兩個(gè)字節(jié)的空間。二進(jìn)制數(shù)字序列,作為計(jì)算機(jī)中的一個(gè)數(shù)字單元,一般是8位二進(jìn)制數(shù),轉(zhuǎn)換成十進(jìn)制,最小值為0,最大值為255。
2. 在UTF-8編碼中,一個(gè)英文字符等于一個(gè)字節(jié),一個(gè)中文字符(包括繁體中文)等于三個(gè)字節(jié)。
3. 在Unicode編碼中,一個(gè)英文等于兩個(gè)字節(jié),一個(gè)中文(包括繁體中文)等于兩個(gè)字節(jié)。符號(hào):英文標(biāo)點(diǎn)占一個(gè)字節(jié),中文標(biāo)點(diǎn)占兩個(gè)字節(jié)。例如:英文句點(diǎn)“.”取1字節(jié),中文句點(diǎn)“.”取2字節(jié)。
4. GBK編碼方法是中文占兩個(gè)字節(jié),英文占一個(gè)字節(jié)。
數(shù)據(jù)庫中varchar的長度與字節(jié),字符串的關(guān)系?
長度理解為兩個(gè)字節(jié)。在MySQL中,漢字和字母的長度是不同的。Varchar(2)存儲(chǔ)兩個(gè)字節(jié)。特別是,如果您知道字段的長度,建議使用char type來優(yōu)化速度。例如,對(duì)于gender字段,直接使用char而不是varchar。Varchar(m)是一種比char更靈活的數(shù)據(jù)類型,char也用于表示字符數(shù)據(jù),但是Varchar可以保存可變長度的字符串。其中M表示數(shù)據(jù)類型允許保存的字符串的最大長度。任何長度小于最大值的字符串都可以保存在數(shù)據(jù)類型中。因此,對(duì)于精確長度難以估計(jì)的數(shù)據(jù)對(duì)象,使用varchar數(shù)據(jù)類型更為可取。varchar類型字段的另一個(gè)突出優(yōu)點(diǎn)是它可以比char類型字段占用更少的內(nèi)存和硬盤空間。當(dāng)數(shù)據(jù)庫非常大時(shí),節(jié)省內(nèi)存和磁盤空間就變得非常重要。雖然varchar的使用更加靈活,但從整個(gè)系統(tǒng)的性能來看,char數(shù)據(jù)類型的處理速度更快,有時(shí)甚至超過varchar處理速度的50%。假設(shè)您將數(shù)據(jù)輸入一個(gè)40字符的varchar類型字段,billgates。以后從這個(gè)字段中提取數(shù)據(jù)時(shí),提取的數(shù)據(jù)長度是10個(gè)字符——比爾·蓋茨字符串的長度。如果在字符類型字段中輸入長度為40個(gè)字符的字符串,則取出數(shù)據(jù)時(shí),取出的數(shù)據(jù)長度將為40個(gè)字符。額外的空格會(huì)附加到字符串的末尾。