java的byte是有符号类型(java就没有无符号类型的数据),值域:-0128~127

c#的byte是无符号类型数值,值域:0~255

这在依赖字符编码处理程序中,两者源代码就不能通用了。

知道原因结局办法就容易多了。

1.使用&与运算 int num1=byte[0]&0xff 与运算一下。

原理:0xff是十六进制整形(至少16位)在直接转化为整形时是255,相当于0x00ff,其二进制表达为前面8个0,后面8个1.而我们知道任何数值与1与还等于其本身。但是0xff是整形至少16个位,byte只拥有8个位,与0x00ff的与运算就相当于吧byte扩充成至少16位的整形。转换自然就OK了。但是不能用0xffff。这是为什么呢?如果是正数,没有什么问题,其实与0xff与运算分为两步,第一个把byte真实扩充为至少16位的整形,扩充的方式正数前用0填位,负数用1填位。所依负数就有问题了,因为java对于8位的负数(计算机系统负数表达形式用正数的补码标示负数,即正数取反1变0,0变1,然后最后一位加1,这时候负数的第一位肯定是1)扩展位数时时前面是用1填充的,其实就变成0xff[byte]。0xff只是后面8位是1,其实就等于0x00ff,前面是0.与运算之后把负数系统自动扩展的1去掉了,就是一个变成正数了,但是用0xffff,如果是16位的整形,与负数与运算,就会保持不变。如果是32为的整形,就会变成一个更大的值0x0000ff[byte]。

2.直接加上无符号与有符号的插值。但是这个还要计算一轮始末的情况。

转载于:https://www.cnblogs.com/edzjx/archive/2012/09/16/2687419.html

java的byte与C#的异同引起的字符处理问题。相关推荐

  1. Java中byte与16进制字符串的互相转换

    https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...

  2. java的byte php_java_浅谈java的byte数组的不同写法,(由于篇幅原因阐述的不够详 - phpStudy...

    浅谈java的byte数组的不同写法 (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"b ...

  3. Java中byte[]与十六进制之间的转化

    Java中byte是占8位二进制,十六进制的数是用4位二进制来表示的.因此当byte转十六进制时,将byte的8位二进制,分为高4位和低4位并分别转化为相应的十六进制,再合到一起即可.当十六进制转by ...

  4. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  5. java byte(字节_【原创】Java中Byte字节流处理的自定义方法库2

    1.把整型转换成指定长度的数组字节流 public static byte[] int2bytes(int integer, int len) { //   if (integer < 0) { ...

  6. Java 字符串,byte[],16进制的字符串互转

    Java 字符串,byte[],16进制的字符串互转 /** * 字符串转换成十六进制字符串 */ public static String str2HexStr(String str) { char ...

  7. 2个在Java中将Byte []数组转换为String的示例

    将字节数组转换为String似乎很容易,但是很难做到正确. 每当字节转换为String或char时,许多程序员都会犯忽略字符编码的错误,反之亦然. 作为程序员,我们都知道计算机只能理解二进制数据,即0 ...

  8. java byte 正数最大_关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)...

    先看一段推理 +124:0111 1100 -124:1000 0100 +125:0111 1101 -125:1000 0011 +126:0111 1110 -126:1000 0010 +12 ...

  9. java sbyte_Java Byte parseByte()方法

    Java Byte parseByte()方法 java.lang.Byte.parseByte(String s) 解析字符串参数作为有符号十进制字节.字符串中的字符必须是十进制数字,除非第一个字符 ...

最新文章

  1. apache开启虚拟主机 并进行配置
  2. HighNewTech:70后、80后、90后、95后职场人大数据调查(有趣的五个结论)——源于猎聘网
  3. Android Bitmap OutOfMemory 解决的方法
  4. python01_python简介
  5. 信息学奥赛C++语言:蒙氏数学难题
  6. 图解TCPIP-传输层 UDP
  7. SpringCloudConfig分布式配置中心-基本使用
  8. pku1192 最优连通子集
  9. Oracle分配内存的基本单位:Granule(粒度)
  10. 麒麟软件、麒麟操作系统、银河麒麟、中标麒麟、优麒麟、国产操作系统下载。
  11. K8S------概述
  12. 一个项目的经验教训:关于打乱和拆分数据
  13. 资深架构师推荐Spring技术内幕:深入了解Spring的底层机制
  14. TMC4671基于硬件FOC伺服电机控制芯片适应BLDC/PMSM、两相步进、直流有刷、音圈电机
  15. com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException
  16. Week 5: Management of the Sporadic Nature of Data Flows 4 - UE-Triggered Service Request
  17. 人工智能前沿——深度学习热门领域(确定选题及研究方向)
  18. STM32之通用定时器计数器模式
  19. 关于移动安全攻击技术分析笔记
  20. 概率 | 【提神醒脑】自用笔记串联二 —— 数字特征、大数定律、统计量

热门文章

  1. 如何撰写将赢得客户青睐的自由职业者提案和免费模板
  2. 村上春树 开始写作_如何克服对写作的恐惧并找到开始的动力
  3. 相关性分析p值_一行代码掌握皮尔逊相关分析,洞察变量关系
  4. ECMAScript 6 模板字面量的常见用法
  5. 现在参加软件测试培训就业难度大不大?
  6. CES Asia专题|微鹅展示无线充电,智能手机的无线充电时代何时来临?
  7. a标签是什么意思 怎么使用?
  8. 云端卫士架构师讲DDoS攻击的智能防御之道
  9. Vue 2 | Part 4 v-bind绑定元素属性和样式
  10. 【MyBatis学习01】宏观上把握MyBatis框架