c java char_Java 和 C 里面 char 的区别

还是从实际运用中体会更加深刻,再 Yar 中定义了_yar_header结构体typedef struct _yar_header {

unsigned int   id;

unsigned short version;

unsigned int   magic_num;

unsigned int   reserved;

unsigned char  provider[32];

unsigned char  token[32];

unsigned int   body_len;

}

这里char占的1字节,但是在 java 里面char占2个字节。

char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。

Java中使用Unicode的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码。Unicode。但是English,Spanish,German, French根本不需要这么表示,所以它们其实采用ASCII码会更高效。这中间就存在一个权衡问题。

因为char是16位的,采取的Unicode的编码方式,所以char就有以下的初始化方式:char c= 'c'; //字符,可以是汉字,因为是Unicode编码

char c= 十进制数,八进制数,十六进制数等等; //可以用整数赋值

char c= '\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。

鸟哥在设计_yar_header中的provider和token的时候实际意义就是说 ASCII 码在0~127之间的,也就是我们常用的用户名密码一样,英文加各种字符。具体可以查看 ASCII 码表。那么我在 Java 中表示的时候,如果用char[16]则密码强度跟不上,为了保持密码强度,这里我用 String 来代替。public class YarHeader {

private int id;

private short version;

private int magicNum;

private int reserved;

private String provider;

private String token;

private int bodyLen;

//...

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值