字符串是可以转变成字节数组,然后统计一下字节数组的长度即可,参考如下代码:
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 = 0i <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.copyValueOf(strRead.toCharArray(), 0, byBuffer.length])2、字符串转换成字节数组 byte[] byBuffer = new byte[200]byBuffer= strInput.getBytes()注意:如果字符串里面含有中文,要特别注意,在android系统下,默认是UTF8编码,一个中文字符相当于3个字节,只有gb2312下一个中文相当于2字节。
import java.io.ByteArrayInputStream\x0d\x0aimport java.io.ByteArrayOutputStream\x0d\x0a\x0d\x0apublic class IOAnswer {\x0d\x0a\x0d\x0apublic static void main(String[] args) {\x0d\x0aString str = "Hello,ABC"//源字符串\x0d\x0a//字节数组输入流\x0d\x0aByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes())\x0d\x0a//字节数组输出流\x0d\x0aByteArrayOutputStream baos = new ByteArrayOutputStream()\x0d\x0a//循 环读取\x0d\x0aint b = -1\x0d\x0awhile((b = bais.read()) != -1){\x0d\x0a//把大写字母转换成小写字母\x0d\x0aif(b >= 97 &&b b -= 32\x0d\x0a}\x0d\x0a//写回到字节数组输出流中\x0d\x0abaos.write(b)\x0d\x0a}\x0d\x0a//输出,并把字节数组输出流转换成字符串\x0d\x0aString out = baos.toString()\x0d\x0aSystem.out.println(out)\x0d\x0a}\x0d\x0a}public class Test{public static void main(String[] args){
byte[] byteArray = "Test".getBytes()
byte[] byteArray2 = "测试".getBytes()
System.out.println("byteArray.length="+byteArray.length)
System.out.println("byteArray2.length="+byteArray2.length)
for(int i=0i < byteArray.lengthi++)
System.out.print((char)byteArray[i])
System.out.println()
for(int i=0i < byteArray2.lengthi++)
System.out.print((char)byteArray2[i])
}
}
汉字2个字节编码,1个汉字转换成2bytes
public class Test{public static void main(String[] args){
//string to byte[]
byte[] byteArray = "Test".getBytes()
byte[] byteArray2 = "测试".getBytes()
//byte[] to string
System.out.println("s="+new String(byteArray))
System.out.println("s2="+new String(byteArray2))
}
}
执行结果: