byte vs char 小结

Imgui输入中文问题(input text) 文章目录查虫Imgui.InputText显示的内容来源解决1.vs里面的字符集: unicode字符集和多字节字符集2.WM_CHAR/WM_UNICHAR/WM_IME_CHAR/3.CP_ACP/CP_OEMCP代码页问题解决小结参考 Imgui显示utf-8编码的中文,但是使用InputText输入的中文是乱码? 查虫 Imgui.InputText显示的内容来源 在imgui_impl_win32.cpp的ImGui_ImplWin32_WndProcHandler中处理输入法,把输入的字符通过接 阅读详情

本篇博客主要针对初学者容易混淆的byte 和char 进行分析,其实只要我们好好复习下java的基本类型和几种常见的字符集,我们就会对这些疑问缝纫而解了,


  1. Java 基本数据类型;
  2. 字符集;

  1. Java数据类型:
    1.1. Java内置数据类型;
    1.2. Java引用对象类型;

1.1. Java内置的数据类型
Java 提供了 8 种基本类型。6 种数字类型( 4 个整数型,2 个浮点型),1 种字符类型,1 种布尔型。

byte:
首先明确一点,byte是Java 4个整数类型中的一个,是用来表示 Java 整数的,自然就会涉及到表示整数的范围,在内存中占几个字节的问题。

  • byte 数据类型用一个字节,也就是 8 位 表示、有符号的,以二进制补码表示的整数;

  • byte表示的整数范围为: 最小值是 -128(-2^7) 到 最大值是 127(2^7-1); 默认值是 0;

  • ASCII码就是用一个字节表示的,因此我们可以有:

    • byte b1 = 34;
    • byte b2 = ‘a’; (会输出 65,因为byte是表示小范围的整数)
    • System.out.println(” b1+b2 = “+(b1+b2))==>”~”= 34+65=99;
    • System.out.println(“b1+b2 = “+b1+b2)==>”~”= 3465;

对应的包装类: Byte.

Byte.Bytes
Byte.SIZE
Byte.MIN_VALUE
Byte.MAX_VALUE
new Byte(byte).short/int/long/float/doubleValue();

short:
short 是Java中第二个整数数据类型,

  • 由 2 个字节 16 位表示、有符号的以二进制补码表示的整数

  • 最小值是 -32768(-2^15) 到 最大值是 32767(2^15 - 1);默认值是 0;

    • short s1=345;
    • short s2=’a’;(自动将byte类型转换成short类型了对应97)

对应的包装类:Short

Short.Bytes
Short.size
Short.MIN_VALUE
Short.MAX_VALUE
new Short(short).byte/short/int/long/float/doubleValue();

int:
int是 Java中第3个表示整数的类型,其表示的范围更大

  • int 数据类型是 4 个字节 32 位表示、有符号的以二进制补码表示的整数;

  • 最小值是 -2,147,483,648(-2^31) 到 最大值是 2,147,483,647(2^31 - 1);默认值是 0;

对应的包装类: Integer

Integer.Bytes
Integer.SIZE
Integer.MIN_VALUE
Integer.MAX_VALUE
Integer.toBinaryString(int)
Integer.parseInt(String s, int radix);

long:
long是 Java中第 4 个表示整数的类型,其表示的范围更大

  • long 数据类型是 8 个字节 64 位表示、有符号的以二进制补码表示的整数;

  • 最小值是 -9,223,372,036,854,775,808(-2^63)到 最大值是
    9,223,372,036,854,775,807(2^63 -1);默认值是 0L;

  • 当我们表示long类型是要在数字的末尾处加上L;

    • long a = 100000L,Long b = -200000L。

对应的包装类为 Long

Long.Bytes
Long.SIZE
Long.MIN_VALUE
Long.MAX_VALUE
Long.toBinaryString(int)
Long.parseInt(String s, int radix);

float:

  • float是Java 中单精度,用4个字节 32位表示,例如:float f1 = 234.5f。

对应的包装类: Float


double:

  • double 数据类型是双精度、8 个字节 64 位表示、 默认值是 0.0d; 例子:double d1 = 123.4。

对应的包装类为: Double



char:

  • char类型是由 2 个字节 16 位表示的,没有符号,

  • char最小值是 \u0000(即为0)到 最大值是 \uffff(即为65,535);

  • char 数据类型可以储存任何字符;

    • char c1 = ‘A’;

    • char c2 = ‘中’ (中字 对应的int值也就是十进制值为20023)

    • char c3 =20023; (输出的c3就是对应的中字)

对应的包装类: Charcter



boolean:

  • boolean数据类型表示一位的信息;只有两个取值:true 和 false;
  • 默认值是 false;
  • boolean one = true。

1.1.1 自动类型转换:
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级。

低  ------------------------------------>  高

byte,short,char—> int —> long—> float —> double 

注意:
1. 不能对boolean类型进行类型转换。
2. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
3. 转换过程中可能导致溢出或损失精度,例如:int i =128;
byte b = (byte)i;

4. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入



  • Java 字符集
    2.1首先我们对ASCII码表有个清晰的记忆:ASCII表,其中:ASCII中的0~31为控制字符;32~126为打印字符;127为Delete(删除)命令,
  • 10 : 换行
  • 13 : 回车
  • 28 : 文件分隔符
  • 32 : space
  • 48 : 0
  • 59 : 9
  • 65 : A
  • 90 : Z
  • 97 : a
  • 122 : z
  • \n 换行 (0x0a)
  • \r 回车 (0x0d)
  • \f 换页符(0x0c)
  • \b 退格 (0x08)
  • \0 空格 (0x20)
  • \s 字符串
  • \t 制表符
  • \” 双引号
  • \’ 单引号
  • \ 反斜杠
  • \ddd 八进制字符 (ddd)
  • \uxxxx 16进制Unicode字符 (xxxx)

以下内容为转载内容:特此标识;


在下面的描述中,将以”中文”两个字为例,经查表可以知道其GB2312编码是”d6d0 cec4”,Unicode编码为”4e2d 6587”,UTF编码就是”e4b8ad e69687”。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来”表示”。

2.1. iso8859-1

属于单字节编码,和ascii编码相似,最多能表示的字符范围是0-255,应用于英文系列。

很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然”中文”两个字不存在iso8859-1编码,以gb2312编码为例,应该是”d6d0 cec4”两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:”d6 d0 ce c4”(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节”e4 b8 ad e6 96 87”。很明显,这种表示方法还需要以另一种编码为基础。

2.2. GB2312/GBK

这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(单字节)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。

2.3. unicode

这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。

需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。

2.4. UTF

考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。

注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。 Unicode标准,它几乎涵盖了各个国家语言可能出现的符号和文字,并将为他们编号。Unicode的编号从0000开始一直到10FFFF共分为16个Plane,每个Plane中有65536个字符。而UTF-8则只实现了第一个Plane,可见UTF-8虽然是一个当今接受度最广的字符集编码,但是它并没有涵盖整个Unicode的字库。

2.4.1 UTF-8

它为变长编码。最小编码单位(code unit)为一个字节。一个字节的前1-3个bit为描述性部分,后面为实际序号部分。

  • 如果一个字节的第一位为0,那么代表当前字符为单字节字符,占用一个字节的空间。0之后的所有部分(7个bit)代表在Unicode中的序号。
  • 如果一个字节以110开头,那么代表当前字符为双字节字符,占用2个字节的空间。110之后的所有部分(13个bit)代表在Unicode中的序号。且第二个字节以10开头
  • 如果一个字节以1110开头,那么代表当前字符为三字节字符,占用3个字节的空间。110之后的所有部分代表在Unicode中的序号。且第二、第三个字节以10开头
  • 如果一个字节以10开头,那么代表当前字节为多字节字符的第二个字节。10之后的所有部分(6个bit)代表在Unicode中的序号。

并有以下规律:

  • 3个字节的UTF-8十六进制编码一定是以E开头的
  • 2个字节的UTF-8十六进制编码一定是以C或D开头的
  • 1个字节的UTF-8十六进制编码一定是以比8小的数字开头的
vs编译项目遇到byte不明确的解决方案 【代码】vs编译项目遇到byte不明确的解决方案。 阅读详情

相关推荐

在c++中,easyx vs2022中如何让接受信息只接受到左键按下在getmessage中,而不接受鼠标移动的消息,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 977

VS编译器中各个类型所占用字节

在C语言学习过程中,不同的变量所占用的字节不同,在内存中所占用的空间与取值范围自然不同,因此需要根据实际情况需要选择不同的类型定义。

weixin_46214418的博客 511

PCIe-4.2.1.2 Framing and Application of Symbols to Lanes

符号到通道的成帧和应用分为两大类。第一类由有序集(Ordered Sets)构成。第二类由数据流(Data Stream)中的 TLP 和 DLLP 构成。架构解析(分类的本质):第一类:有序集(Ordered Sets)—— “链路控制指令”这是物理层的“命令集”。包括 TS1/TS2(训练序列)、SKP(时钟补偿)、EIOS(电气空闲)、FTS(快速训练)等。这是物理层(PHY)为了链路管理而定义的特定序列,例如训练序列(TS1/TS2)、电气空闲退出序列(EIEOS)、时钟补偿序列(SKP)等。

weixin_44700185的博客 92

VS编译错误E0266“byte“不明确或者C2872“byte“不明确的符号

解决办法,注释掉using namespace std,在需要用std函数或类型前加上std::,或者数量太多每个都加太繁琐的话,可以直接在函数内前面加上using namespace std。由于使用了using namespace std导致出现byte重定义,不明确的符号。

qq_25776687的博客 3626

PyTorch实战:A2C算法在Pendulum环境中的调参技巧与收敛优化

本文详细介绍了使用PyTorch实现A2C算法在Pendulum环境中的调参技巧与收敛优化方法。通过分析Pendulum环境特性、设计高效的网络架构、优化超参数设置以及提升训练稳定性,帮助开发者掌握强化学习中的policy-based方法。文章特别强调了奖励工程、优势估计改进和梯度裁剪等关键优化策略,为连续控制任务提供了实用解决方案。

rum55的博客 213

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8349

字符,字节和编码

级别:初级摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。举例说明了一些实际应用中,编码的实现方法。然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的办法。本文的内容涵盖了“中文问题”,“乱码问题”。引言“字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并

levin9的专栏 2822

【Codex安装使用手册】

Codex安装部署使用教程

qq_43392230的博客 4932

VS2015 下python编程,报错:‘utf-8‘ codec can‘t decode byte,解决办法?

问题描述,形如以下的C++调用python代码,在vs2015下报中文编码错误#include <iostream> using namespace std;int main() { Py_Initialize(); /*初始化python解释器,告诉编译器要用的python编译器*/ // 检查初始化是否成功 if (!Py_IsInitialized()) {

程序的尽头是数学,一日不推导赶不上买买提 6691

【CVPR 2025】清华:注意力状态空间模块,Mamba与注意力的超强组合,即插即用!

MambaIRv2提出了一种创新的图像恢复模型,通过引入注意力状态空间模块(ASSM)解决了Mamba模型因果建模限制问题。该模型结合语义引导邻域机制和注意力状态空间方程,实现了非因果建模,有效缓解了长距离衰减问题。实验表明,MambaIRv2在图像超分辨率、JPEG压缩伪影减少和图像去噪等任务中表现优异,参数更少但性能超越现有方法。

qq_43303160的博客 3038

TI电机驱动应用中MOSFET选型完整指南

深入解析TI电机驱动设计中MOSFET的选型关键,涵盖参数匹配、热性能与开关效率,帮助工程师优化系统性能并提升能效,是掌握MOSFET应用的核心参考。

weixin_42263617的博客 1268

IEC 104 系列(二):报文结构——APCI/ASDU/APDU 深度解析

本文详细解析了IEC 104协议的报文帧结构。主要内容包括:1)APDU由APCI和ASDU组成,分为I/S/U三种帧类型,其中I帧承载数据,S帧用于确认,U帧用于链路控制;2)APCI固定6字节,包含起始符、长度和控制域,控制域格式区分帧类型;3)ASDU包含类型标识、可变结构限定词、传输原因等7层结构,不同类型数据通过TI值区分。文章通过流程图和示例详细说明了各类帧的字节结构和应用场景,为理解IEC 104协议提供了清晰的框架。

QAZ600888的博客 894

【FLINK+Kerberos+kafka】在华为云上 bootstrap.server使用IP的GSS initiate failed 问题处理

目前互联网上所有的资料显示都是说没有正确设置KDC之类的,但本博主实际通过java代码低版本 如使用kafka-client 0.11.0 ,2.4.0等版本手动创建kafkaconfig 或者使用华为云的LoginUtils类 都能够正常链接,所以应该是高版本添加了相关配置,或者flink在subtask 创建kafkaAdminClient时 丢弃或使用了默认的一些配置行为,导致了客户端和kdc验证之间出现了principal 不一致导致验证失败。client.dns.lookup配置项作用。

honghanyue1791的博客 574

C语言从入门到进阶(个人笔记细节版)鲍松山老师课程

《C语言入门基础笔记》摘要 本文是C语言基础入门教程,包含以下核心内容: 开发环境:推荐VS2026/Dev-C++/CodeBlocks编译器 基础语法:首个C程序结构、数据类型(整型/浮点型)及存储大小 输入输出:printf/scanf函数详解,格式化输出技巧 进制转换:二进制/八进制/十进制/十六进制互转方法 变量常量:定义、命名规则、作用域及const与#define区别 实用技巧:VS编译器问题解决方案、格式化输出控制、浮点精度处理 配套练习:包含日期反向输出、进制转换等实践题目 笔记采用渐进式

一起学习编程知识 583

abaqus 根据坐标施加载荷- Analytical Field 载荷映射

在一些类型的分析中,需要将按位置分布的载荷施加到结构上,比如流体分析导出了结构的气动载荷、或者温度载荷,需要将压强分布、温度分布载荷施加到固体上。这种分析可以使用abaqus中的Analytical Field实现。 1 例子 1.1 结构 一个100*100mm的面,面的载荷分布函数为p=(x2+y2)0.5/((20.5)*100) MPa,即(0, 0)的压强为0,(100, 100)的压强为1。 1.2 载荷 载荷函数:p=(x^2+y^2)^0.5/((2^0.5)*100) in exce.

shengyutou的博客 2万+

解决Android API 30+视频播放抖动问题

摘要:本文探讨了Android开发中使用ExoPlayer在API 30+设备上出现的视频抖动问题。作者发现API 30以下版本运行正常,但API 30及以上版本会出现画面不稳定现象。解决方案是改用TextureView替代SurfaceView,通过修改PlayerView配置并设置setUseTextureView(true)来增强播放稳定性。这一简单改动有效解决了API兼容性问题,为开发者提供了实用的解决方案。

m0_62153576的博客 114

C++ 中各种数据类型所占的字节

遇到了数据存储的大端和小端问题,这你妹的看的一头雾水,发现我基本知识严重匮乏啊,先了解C++各数据类型在自己机子上占多少字节吧,以及这些数据类型所占字节大小与神马有关。各种查资料然后写代码检验,小结于本文中,给自己补补基础知识。 先来列一下C++的数据类型: 整型:int,long。这两个还分signed(有符号)和unsigned(无符号)的,当然有符号和无符号所占字节大小是一样的,就不管他

晴天的专栏 3261

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c++高级---C++主要数据类型在计算机中所占字节大小

转自:http://www.cnblogs.com/Romi/archive/2012/01/09/2317059.html 遇到了数据存储的大端和小端问题,这你妹的看的一头雾水,发现我基本知识严重匮乏啊,先了解C++各数据类型在自己机子上占多少字节吧,以及这些数据类型所占字节大小与神马有关。各种查资料然后写代码检验,小结于本文中,给自己补补基础知识。 先来列一下C++的数据类型: 整型:i

Wait的专栏 960

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

第3章 IO 流深入:字节流、字符流与序列化

程序再"聪明",数据最终也要落到磁盘、网络这些"管道"里。IO(Input/Output,输入/输出)就是程序与外部世界交换数据的通道:读写配置、上传下载、日志落盘、对象缓存到磁盘,全都依赖 IO。但 IO 也是乱码、资源泄漏、复制不完整等问题的重灾区:忘关流文件被占用、编码不一致中文变乱码、没判断 read 返回值文件只复制一半……本章把这些坑一个个讲清楚,并深入序列化(Serializable、serialVersionUID、transient),让你从"会写"进阶到"写得对、写得稳"。

成熟的标题 172

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

第02篇-变量-数据类型与空安全

本文介绍了Kotlin变量声明、数据类型和空安全机制的核心知识点。主要内容包括: 变量声明:推荐优先使用不可变变量val,仅在需要修改时使用var,这可以提升代码安全性和可读性。 数据类型:Kotlin所有类型都是对象,支持自动类型推断,但强制显式类型转换以避免隐式转换问题。详细介绍了数字类型(Int/Long等)、字符、布尔和字符串类型及其操作。 字符串处理:支持多行字符串、字符串模板等便捷操作。 空安全机制:通过可空类型(String?)和非空类型(String)区分,配合安全调用操作符(?.)、Elv

liumingxiy的博客 293

【Java 】逻辑控制 0基础的快来

0基础 Java 逻辑控制

xingzi1019的博客 395

C++主要数据类型在计算机中所占字节大小

到了数据存储的大端和小端问题,这你妹的看的一头雾水,发现我基本知识严重匮乏啊,先了解C++各数据类型在自己机子上占多少字节吧,以及这些数据类型所占字节大小与神马有关。各种查资料然后写代码检验,小结于本文中,给自己补补基础知识。 先来列一下C++的数据类型: 整型:int,long。这两个还分signed(有符号)和unsigned(无符号)的,当然有符号和无符号所占字节大小是一样的,就

`小明湖畔.。のBlog 649

前端学 Java 课程笔记

面向前端开发人员:大量以前端概念类比

estrusKing的博客 230

C 语言学习笔记

B站up Micro_Frank C语言大师系列课程笔记

g_c_m_g的博客 1221

Java面试通关③:Java常用API核心全集

摘要:Java常用API是**日常开发使用率最高、面试细节考点最多、隐性坑点最密集**的基础模块,贯穿所有业务开发场景。大部分开发者长期凭经验使用API,不了解底层差异、性能优劣、适配场景,极易出现代码冗余、精度问题、线程安全隐患,面试也常因细节失分。本篇系统性整理字符串、时间工具、数学工具、集合工具等高频API,深度解析底层原理、性能对比、使用规范与避坑技巧,搭配实战案例与面试真题,**规范代码写法、规避生产Bug、搞定API细节面试考点**,全面提升代码质量与面试得分率。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 347

【Java】数组 从认识到参透一点类和对象

本文将详细讲解 Java 数组的定义、初始化、使用方法、内存模型、引用特性以及 Arrays 工具类的使用 适合 Java 初学者系统学习数组知识

xingzi1019的博客 941
上一篇: Hibernate: 三种状态和CRUD四种操作
下一篇: Spring+Hibernate:Aop相关概念与动态代理
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值