java字元串的位元組數
① (java)如何獲取字元串的位元組數!
(java)如何獲取字元串的位元組數!, java怎樣獲取字元串的位元組數
字元串是可以轉變成位元組數組,然後統計一下位元組數組的長度即可,參考如下代碼:
Java語言中,中文字元所佔的位元組數取決於字元的編碼方式,一般情況下,採用ISO8859-1編碼方式時,一個中文字元與一個英文字元一樣只佔1個位元組;採用GB2312或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。
public static void main(String []args) throws UnsupportedEncodingException {
運行結果:2
System.out.println("測試".getBytes("ISO8859-1").length);
運行結果:4
System.out.println("測試".getBytes("GB2312").length);
運行結果:4
System.out.println("測試".getBytes("GBK").length);
運行結果:6
System.out.println("測試".getBytes("UTF-8").length);
}
c# 獲取字元串的位元組數
C#截取字元串位元組數 代碼如下:
public int bytelenght(string str)
{
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
int j = 0;
for (int i = 0; i < bytestr.GetLength(0); i++)
{
if (i % 2 == 0)
{
j++;
}
else
{
if (bytestr[i] > 0)
{
j++;
}
}
}
return j;
}
謝謝採納
c++ 怎樣獲取一串字元串的字元數,不是位元組數
定義一個字元數組,然後根據字元長度循環得到字元
比如char ch[20];
這個20可以用字元實際長度getlength()獲取
然後再循環獲取字元
ch[i]
c#求字元串的位元組數
其實用不著那麼復雜計算的。注意:C#中string.Length只是計算字元串「字元」的個數,不計算位元組;但是漢字兩個位元組+數字(英文字元)一個位元組,才是6個,簡單的代碼如下: byte[] bytes = Encoding.Default.GetBytes("1243我"); Default(根據自己究竟是漢字還是數字等,自動合理分配內存所需要的位元組空間)
Console.WriteLine(bytes.Length);
C#如何獲得存放字元串的位元組數組?
byte[] System.Text.Encoding.Default.GetBytes(string s)
如何計算一個Unicode字元串的位元組數
你就是一個byte一個byte讀取的吧?一個漢字兩個byte(不含surrogate情況),文件中存兩個byte,你從文件中讀取2個byte,就是這樣 查看原帖>>
java下字元串和位元組數組如何轉換?
strRead = String.ValueOf(strRead.toCharArray(), 0, byBuffer.length]); 2、字元串轉換成位元組數組 byte[] byBuffer = new byte[200]; byBuffer= strInput.getBytes();注意:如果字元串裡面含有中文,要特別注意,在android系統下,默認是UTF8編碼,一個中文字元相當於3個位元組,只有gb2312下一個中文相當於2位元組。
② Java語言中一個字元占幾個位元組
Java規定了字元的內碼要用UTF-16編碼,一個字元是2個位元組。外碼字元所佔位元組取決於具體編碼。字元和位元組是不一樣的。
外碼編碼不同,字元和位元組的換算不同,幾種常見的編碼換算如下:
ASCII編碼是單位元組編碼,只有英文字元,不能編碼漢字。
GBK編碼1個英文字元是1個位元組,一個漢字是是2個位元組。
UTF-8編碼1個英文字元是1個位元組,一個漢字是3個位元組。
Unicode編碼1個英文字元是2個位元組,一個漢字是2個位元組。
(2)java字元串的位元組數擴展閱讀:
漢字編碼的困難點 漢字進入計算機,有許多困難,其原因主要有三點:
①數量龐大:一般認為,漢字總數已超過6萬個(包括簡化字)。雖有研究者主張規定3000多或4000字作為當代通用漢字,但仍比處理由二三十個字母組成的拼音文字要困難得多。
②字形復雜:有古體今體,繁體簡體,正體異體;而且筆畫相差懸殊,少的一筆,多的達36筆,簡化後平均為9.8筆。
③存在大量一音多字和一字多音的現象:漢語音節416個,分聲調後為1295個(根據《現代漢語詞典》統計,輕聲39個未計)。以1萬個漢字計算,每個不帶調的音節平均超過24個漢字,每個帶調音節平均超過7.7個漢字。有的同音同調字多達66個。一字多音現象也很普遍。
③ java中的字元串佔多少位元組
要看字元串長度一個字元2位元組
比如
Stringstr="abc";
str有三個字元佔6個位元組
④ java中String類型的數據分配多少位元組
Java中無論是漢字還是英文字母都是用Unicode編碼來表示的,一個Unicode碼是16位,每位元組是8位,所以一個Unicode碼占兩位元組。但是英文字母比較特殊,源自於8位(1位元組)的ASCII嗎,於是在Unicode碼僅使用了低8位(1位元組)就可以表示,高8位的話不使用也無所謂。所以
char
c='a';
System.out.println(c.getBytes().lenth()),得到的是1(位元組)
但漢字就完整地使用了16位(2位元組)的Unicode,所以
char
c='中';
System.out.println(c.getBytes().lenth()),得到的是2(位元組)
綜上,c='a'在內存中確實只佔1位元組,但這不意味著String
s="abc"在內存中只佔3位元組。應該這么說,String
s="abc"至少在內存中佔3位元組。這是因為char是基本數據類型,而String確是對象類型。