CPP-基础:char、BYTE、byte
一,C++语言的内建类型中没“BYTE”这么个类型。
BYTE是WINDOWS Platform SDK中windef.h里面定义的:
typedef unsigned char BYTE;
二,char 与 byte(JAVA)
相同:c++中char型数组占一个字节。byte也占8个bit。
不同:char 是字符型(-127 - 128;byte是字节型(0 - 255) .
JAVA中byte类型的介绍:
Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。
不幸的是,byte的用作计数的时间远少于用表达基本内存单元的时间。比如从stream里读入一个双字节字符,我们先收到2个byte。为了把byte转换成适当的形式,需要对byte值做一些比较,比如判断字符集要比较其是否在某个编码范围内,比如GBK 0x8140~0xFEFE,然后new适当的string。
signed byte 把 0x00 ~ 0xff 映射成0~127 -128~-1两段,注意当与literal比较时,java自动将literal识别成int
可以用 下面的小程序来验证:
1 public class JavaByte
2 {
3 public static void main(String[] args)
4 {
5 byte b = 0;
6 for ( int i = 0; i <= 0xff; ++i )
7 {
8 b = (byte)i;
9 System.out.print(" "+i+":"+b+", ");
10 }
11 }
12 }
当收到(0xC7B0)这个GBK字符时,要判断 0x81 <= 0xC7 <= 0xFE 是否成立,实际变成判断 -127 < -57 < -2,唔,万幸,可以直接比较 low < ch < high。如果要判断 0x00 <= 0xC7 <= 0x80 (ASC Char),这回麻烦了,变成判断 (0 <= -57 <= 127) || ( 0x57 == -128 )。比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用&0xff并赋给一个int。
考虑到jvm里的byte其实也是32位的,所以在计划用byte的地方,直接用integer并不会有什么实际的损失,而 DataInputStream也提供了一个readUnsignedByte()方法返回的是int。所以真正的解决方案是忘掉byte,直接上 int。
CPP-基础:char、BYTE、byte的更多相关文章
- java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别
在平常工作中使用到char和byte的场景不多,但是如果项目中使用到IO流操作时,则必定会涉及到这两个类型,下面让我们一起来回顾一下这两个类型吧. char和byte的对比 byte byte 字节, ...
- java基础类型的byte为长度
java基础类型的字节长度: 类型 byte数/位数 最大/最小值 byte 1/8 127/-128 short 2/16 32767/-32768 int 4/32 2147483647/-214 ...
- C# byte[]与char[]、string与char[]、byte[] 与 string 互转
1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; Char[] c=Encoding.AS ...
- char与byte的差别
非常多刚開始学习的人(包含我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比較,先将结果与大家 ...
- char与byte差异
很多人刚开始学习(包含I,我已经学会了一年多java该)肯会char和byte怀疑这两个数据类型,相互混淆.今天,大量的信息专门搜索,至byte和char两个数据类型进行了总结和比较.第一批成果与大家 ...
- 基本类型数据转换(int,char,byte)
public class DataUtil { public static void main(String[] args) { int a = 8; int value = charToInt(by ...
- Java入门:char与byte的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char是 ...
- Char 与 Byte
var c: Char; b: Byte; begin c := 'A'; ShowMessage(c); //A b := ; ShowMessage(IntToStr(b)); c := Chr( ...
- char与byte的区别
很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享: b ...
随机推荐
- Java文件输入输出
public static void FileIO(String filename){ FileInputStream fis = null; try { fis = new FileInputStr ...
- AtCoder Regular Contest 061 E - すぬけ君の地下鉄旅行【最短路】
具体题解又要搬大哥的了,嘿嘿~ 请点击:G点我 这道题目的难点就是同一家公司的路直接走不需要再花费,然后多了一个公司这个东西,这个不像是边的副权值(瞎说的)之类的东西,这是对于路来说的,路的属性... ...
- ThinkPHP3.2.3学习笔记6---专题---数据分页
http://document.thinkphp.cn/manual_3_2.html#data_page thinkphp3.2.3中分类的功能调用的文件$THINKPHP_HOME/ThinkPH ...
- [Xcode 实际操作]八、网络与多线程-(10)使用异步Get方式查询GitHub数据
目录:[Swift]Xcode实际操作 本文将演示如何通过Get请求方式,异步获取GitHub资源的详细信息. 异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程. 在项目导航区,打开 ...
- JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)
需求:数据表格datagrid实现删除当前行和多选删除的功能. html <a href="javascript:void(0)" data-toggle="top ...
- 在Mac上安装Ubuntu14.04虚拟机
1.在macOS High Sierras上安装VMware for mac 下载地址:VMware Fusion 8.5.1 https://pan.baidu.com/s/1skQ1OyL 2. ...
- [CF1111D] Destory the Colony
Portal 大致题意: 给定一个偶数长度(\(n \leq 10 ^ 5\))的字符串, 只包含大小写字母. 有q(\(q \leq 10 ^ 5\))次询问, 每次指定两个位置, 要求通过交换字符 ...
- 110 Balanced Binary Tree 平衡二叉树
给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过 1.案例 1:给出二叉树 [3,9,20,null,null,15,7] ...
- attribute与property区别总结
在前阵子看JQuery源码中,attr()的简单理解是调用了element.getAttribute()和element.setAttribute()方法,removeAttr()简单而言是调用ele ...
- mysql 定时任务和存储过程
mysql 定时任务和存储过程 最近在做日志系统,中间用到了 mysql, 其中有一个要求: 把数据库中 7天之后的日志清除了.看到 mysql 也支持 定时任务.于是就用 mysql 来做了.下面就 ...