`
Phoenix_MVP
  • 浏览: 340415 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

拓宽并窄化原始类型的转换

 
阅读更多

拓宽并窄化原始类型的转换即widening and narrowing primitive conversion

byte转char过程就是拓宽并窄化原始类型的转换:byte 被转换成了int,而这个int 又被转换成了char。

 

 

		System.out.println((int)(char)((byte)(int)-1)); //65535
		System.out.println((int)(char)(byte)(-1&0xff)); //65535
		System.out.println((int)(char)(-1&0xff));  //255
		System.out.println((int)(short)(char)((byte)(int)-1));  //-1
		// 位运算
		System.out.println(Integer.toBinaryString(-1)); //11111111111111111111111111111111
		BigInteger src = new BigInteger("ff",16); //字面量本身是没有符号的,例如10进制,2进制,16进制数字
		System.out.println(src.toString()); //255
		//char 转 int
		char x = (char)((byte)(int)-1);
		int m = x;
		System.out.println(m); //65535
		int n = (short)x;
		System.out.println(n); //-1

 

转换过程

1. int类型-1常量转换为byte, 即0xff

2. byte转char,执行两步:

1) 先byte转int, 即0xffffffff;

2) 再转换成char,截断高2个字节,0xffff;

3. 转换成int即,显示65536

 

这里涉及一个比较重要点的转换规则即:窄整形数据到宽整形数据转换规则—》如果最初的数值类型是有符号的,那么就执行符号扩展;如果它是char,那么不管它将要被转换成什么类型,都执行零扩展。

 

byte到char扩展过程:

1. 如果不希望发生符号拓展

byte b = -1;

char c = (char)(b & 0xff); // 即b已经不是当初的有符号类型的byte了,与下面的对比;

 

2. 如果希望发生符号拓展

byte b = -1;

char c = (char) b; //即等价于 char c = (char)(byte)b; 即b还是有符号类型的;

 

 

char转int扩展过程:

1. 如果不希望发生符号拓展:

int i = c & 0xffff 或者 int i = c;  // 由于char本身是无符号的,所以可以不进行位运算;

 

2. 希望发生符号拓展:

int i = (short) c; //先转成有符号的short,再转成int; 

 

 

 

深入:http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

 

 

分享到:
评论

相关推荐

    类型转换

    这种转换被称为拓宽转换,因为它通常是从范围较小的数据类型转换到范围较大的数据类型。例如,你可以将一个`int`类型的值赋给`long`类型的变量,因为`long`的范围大于`int`。在数字类型之间(包括整数和浮点数),...

    万能文本转换工具totext

    【万能文本转换工具Totext】是一款功能强大的文件转换软件,专用于将各种非文本格式的文件转换成可读的文本格式。...理解和熟练使用此工具,能够拓宽我们处理不同类型文件的能力,但同时也需注意其潜在的风险和限制。

    迅雷、快车、旋风、Rayfile 下载地址转换器

    需要注意的是,虽然转换器提供了便利,但转换后的链接可能仍然受到原始服务的下载速度限制,尤其是免费的Rayfile账户可能有速度上限。此外,对于版权保护或隐私敏感的文件,使用这类转换工具时需谨慎,以避免触犯...

    scratch2exe转换器.rar

    值得注意的是,转换后的.exe文件可能包含原始项目的所有资源,因此其大小可能会比原始的.sb3或.sb2文件大得多。 总的来说,Scratch2exe转换器是Scratch项目向更广泛受众展示的桥梁,它不仅方便了编程学习成果的分享...

    DictUnifier-2.1mac 词典格式转换

    DictUnifier 2.1mac 是一个高效且易用的字典格式转换软件,它的核心功能在于能够将各种类型的词典文件转换为适用于Mac系统的格式。这一特性极大地拓宽了用户的选择范围,不再受限于特定的字典格式,可以自由地整合...

    在线免费度衡量换算转换器 -源码.zip

    这个压缩包包含了实现这一功能的源代码,可以帮助程序员理解和学习如何处理这种类型的计算和用户界面设计。解压密码是"www.cqlsoft.com",这确保了只有知道特定密码的人才能访问这些源代码。 源码通常是程序员或...

    数据组数据可视化项目集合.zip

    4. **选择合适的可视化类型**:根据数据的特性和目的,选择最有效的可视化类型,如折线图、柱状图、饼图、热力图、散点图矩阵、地理热图等。 5. **使用可视化库**:在Python中,常用的数据可视化库有Matplotlib、...

    将abaqus关键字输入文件翻译成 ls-dyna 关键字输入文件_Python_abaqus

    4. **验证和调试**:转换后的文件应与原始Abaqus模型尽可能一致,用户可能需要通过对比分析结果来验证转换的准确性。 在实际应用中,可能需要根据具体模型的需求对转换脚本进行调整或扩展。Python的灵活性使得这种...

    unicode转换:Haskell中的快速Unicode规范化

    通过理解和熟练使用这个库,开发者可以编写出更加健壮、国际化友好的软件,提升用户体验并拓宽应用程序的适用范围。在阅读`unicode-transforms-master`中的源代码和文档,你可以更深入地了解其内部机制,并学习如何...

    行业分类-设备装置-一种数字阅读格式到数字多维度多媒体(DMM)格式的转换方法.zip

    在当前的数字化时代,...数字阅读格式到DMM的转换技术不仅提升了内容的表现力,也拓宽了内容的创作和消费方式。随着技术的发展,我们期待看到更多创新的解决方案,以满足用户对更丰富、更具沉浸感的数字内容的需求。

    JarOrClass2Pas_FlyingWang.exe.zip

    转换过程中,工具会尽可能保留原始的代码逻辑,同时考虑到Delphi的编程习惯,如命名规则、类型映射等。 转换完成后,生成的Pas文件可以直接在Delphi环境中打开,进行进一步的修改和优化。这大大节省了开发者手动...

    matlab开发-matml

    这个过程涉及到了数据类型映射,例如将MATLAB的复数转换为XML中的复杂数值表示。 2. **XML文档结构**:MATML生成的XML文件包含了一系列的元素,这些元素对应于MATLAB变量的结构。例如,矩阵会被表示为一个包含行和...

    ConvCalc-源码.rar

    ConvCalc这个名字暗示了它可能涉及到数据转换功能,比如单位转换、数值类型转换或者数据格式转换。在实际应用中,这样的工具可以帮助用户在不同格式之间轻松切换,提高工作效率。源码中可能包含了各种转换算法,如...

    计算机控制技术课程设计数据采集系统.pdf

    在软件设计中,主程序需实现对硬件的初始化,设置中断服务程序,处理数据采集、转换和存储,并可能包含通信协议的设计,以确保数据的正确传输和处理。 综上所述,计算机控制技术课程设计中的数据采集系统项目,涵盖...

    企业数字化转型与数据治理整体规划方案59页.pptx

    - 通过ETL(Extract Transform Load)流程清洗、转换原始数据,使之符合分析要求。 - 应用高级统计方法和机器学习算法深入挖掘数据潜在价值。 - **数据销毁与归档:** - 对不再使用的数据进行妥善处理,避免占用...

    swift-用于Codable类型的MessagePack编码器和解码器

    `Encoder`负责将`Encodable`类型转换为MessagePack字节流,而`Decoder`则从字节流中解析出`Decodable`类型。在这个项目中,这两个组件可能已经实现了`Encoder`和`Decoder`协议,并且可能提供了便捷的方法来处理常见...

    DICOM标准接口协议

    4. **垂直镜像变换**:由于DICOM图像的坐标系与常规图像坐标系可能存在差异,执行垂直镜像变换可以确保转换后的图像在视觉上与原始DICOM图像一致。 5. **BMP格式存储**:完成上述步骤后,将处理后的像素数据按照BMP...

    POPSConvertor

    除了转换DAT攻略文件,POPSConvertor有时也被用于转换其他类型的游戏数据,如存档、游戏资源等,以实现更广泛的兼容性和个性化定制。通过这个工具,玩家能够更好地利用PSP的潜力,享受更多的游戏内容。 总的来说,...

    Streamline 4.0

    Streamline 4.0 是一款历史悠久的图形软件,主要用于将位图图像转换为矢量图形。...对于那些需要将位图图像转化为可编辑矢量图形的设计师而言,掌握Streamline 4.0的操作技巧,无疑能提升工作效率并拓宽设计的可能性。

Global site tag (gtag.js) - Google Analytics