byte怎么转换为char
这是计算机中存储信息的单位。char是字符型byte是字节型(0-255)在参与算术运算是char类型会自动转为整型;如字符A会转为对应ASCII码65.char是用来表示一个字符,而不是一个字,因为一个字要占用两个字节。
而存储一个ANSI字符只需一个字节。注意,强调是ANSI字符,而不是Unicode字符。因为Unicode要占用两个字节。byte类型是最自由的一种。
它就占用一个字节,但没有定义这个字节拿来干什么。char定义为一个UnsignedByte类型。也就是无符号的一个字节。它将一个字节的8位全占用了。
表示的数据范围是0到255之间。你确定处理的字符串是标准的ANSI字符串,那不必转换也可以直接一个字节一个字节地处理。要处理的字符串不定或是统一的Unicode字符串则要进行转换后进行处理。
扩展资料:
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。最常用的字节是八位的字节,即它包含八位的二进制数。
ASCII码:一个英文字母(不分大小写)占一个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数。换算为十进制 ,最小值-128,最大值127。如一个ASCII码就是一个字节。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。
任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。
例如,以 4 个 2字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。
参考资料来源:百度百科-Byte
java中byte转char的方法如下:
private char[] getChars (byte[] bytes) {
Charset cs = Charset.forName ("UTF-8");
ByteBuffer bb = ByteBuffer.allocate (bytes.length);
bb.put (bytes);
bb.flip ();
CharBuffer cb = cs.decode (bb);
return cb.array();
}
扩展资料
java中byte无法强制转化成char,强制类型转换有以下两个条件:
1、条件是转换的数据类型必须是兼容的。
2、格式:(type)value type是要强制类型转换后的数据类型 。
实例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
byte转char 如下:
private char[] getChars (byte[] bytes) {
Charset cs = Charset.forName ("UTF-8");
ByteBuffer bb = ByteBuffer.allocate (bytes.length);
bb.put (bytes);
bb.flip ();
CharBuffer cb = cs.decode (bb);
return cb.array();
}
扩展资料:
java基本数据类型分三种:字符char,布尔boolean,数值(整形,浮点型),其中数值类型的都是有符号的,但char是没有符号的,范围0-2^16-1,可能就是这个原因导致byte不能直接转换为char。
数据转换分类
1、自动转换
是指不需要书写代码,由系统自动完成的类型转换。要求如下:
1)、两种数据类型彼此兼容;如数值型与布尔型不兼容则无法转换
2)、类型存储范围由小到大:byte→short(char)→int→long→float→double
2、手动转换
类型储存范围由大到小,结果会造成精度丢失
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
//char转化为byte
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
//byte转换为char
public static char byteToChar(byte[] b) {
char c = (char) (((b[0] & 0xFF) << 8) | (b[1] & 0xFF));
return c;
}
当然不同的编程编程语言有不同的强制转换方法,要根据不同的语言而定
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
System.out.println(c);
byte d1 = 1;
byte d2 = -1;
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d4);
结果为:
?
1
-1
127
-128
2、char可以表中文字符,byte不可以,如:
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1);
System.out.println(e2);
System.out.println(f);
结果为:
中
国
45
3、char、byte、int对于英文字符,可以相互转化,如:
byte g = 'b'; //b对应ASCII是98
char h = (char) g;
char i = 85; //U对应ASCII是85
int j = 'h'; //h对应ASCII是104
System.out.println(g);
System.out.println(h);
System.out.println(i);
System.out.println(j);
结果为:
98
b
U
104
byte b = 95;
char c = (char)b;