Java中,把不用特转换为其他类型时是被作为signed(带正负号)来处理的, 所以要得到byte对应的unsigned的值必须把sign位(bits中最高位)mask掉并转为integer。 因为byte转为int后会当成负数来处理,并扩展位数从8位(byte)到32位(int),必须用& 0xff来清掉sign位 比如-1的byte(0xff),转为int的-1(0xffffffff)。 这样的话在于0xff做与(&)的运算的话,就变为了0x000000ff,也就是我们想要的unsigned的值,也就是255。
例子
public class UnsignedByte {
public static void main (String args[]) {
byte b1 = 127;
byte b2 = -128;
byte b3 = -1;
System.out.println(b1); //调用println时,被转为int型
System.out.println(b2);
System.out.println(b3);
System.out.println(unsignedByteToInt(b1));
System.out.println(unsignedByteToInt(b2));
System.out.println(unsignedByteToInt(b3));
/*
127
-128
-1
127
128
255
*/
}
public static int unsignedByteToInt(byte b) {
return (int) b & 0xFF;
}
}
分享到:
相关推荐
Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...
现代的泥浆服务器。 UnsignedByte使用sqlite3数据库作为后端,而不是使用慢速和老式的文本文件。 它使用第三方GPLed套接字库。 当项目达到Beta阶段时,Mugglenet的泥浆(Legilimensia)将使用此引擎。
如何把char str,或unsigned char str转换成CString
无符号数双字节乘双字节程序和无符号数双字节乘三字节程序,只是子程序,可直接复制到程序里,然后调用到主程序。
float、int、unsigned int数据与其在实际内存中表示的相互转换小程序
Caused by: java.util.jar.JarException: file:/opt/code/signal-Server-master/target/TextSecureServer-1.87.jar has unsigned entries - org/whispersystems/dispatch/DispatchManager$4.class at javax.crypto....
当QString内容包含汉字时,转换char*等会发生失败。此接口解决了该问题。使用后char*与unsigned char*的qDebug()输出与QString输出结果相同。 注意,该函数返回unsigned char*使用完毕后记得delete。
自己写的unsigned char二维数组转8位bmp的函数。
栅格那点事儿,本系列是一个普及贴,讲讲关于影像栅格的小基础。主要目的捏,是为了让 GIS 出身的筒子们,能在影像滚滚而来的今天,仍然可以 hold 住场面。
CRC校验源码unsigned int CRC_32(const unsigned char *buf, unsigned int size); BYTE CRC_8(BYTE *pDatabuf, UINT dataLen)
由于byte被认为是unsigned byte,所以最高位的1将会被解释为符号位,另外Java中存储是按照补码存储,所以1000 0111会被认为是补码形式,转换成原码便是1111 0001,转换成十进制数便是-121
把unsigned int 对调
在linux下,将uyvy格式的图片转换成bmp格式 默认宽度是720 头文件忘记传了:uyvytobmp.h #ifndef __UYVY_TO_BMP__ #define __UYVY_TO_BMP__ typedef unsigned int DWORD; typedef unsigned short int WORD; typedef...
BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下: typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD;
讲述了volatile_unsigned_int地址映射的使用说明。
C语言中unsigned、类型转换与程序的可移植性
//c++:Byte(unsigned char) —- c#:System.Byte //c++:SHORT(short) —- c#:System.Int16 //c++:WORD(unsigned short) —- c#:System.UInt16 //c++:INT(int) —- c#:System.Int16 //c++:INT(int) —- c#:System...
Turbo C: [signed] int 2Byte//有符号数,-32768~32767 unsigned int 2Byte //无符号数,只能表示整数0~65535 [signed] short [int] 2Byte unsigned short [int] 2 Byte long [int] 4 Byte unsigned long ...
typedef unsigned char BYTE; extern "C" { BYTE __stdcall hextobcd(BYTE *buf); void __stdcall bcdtohex(BYTE b,BYTE *buf); bool __stdcall hextostring(unsigned char *inbuf,int inlen,unsigned char * outbuf...
尽管我们在这个例子使用了byte 类型的值,但同样的基本的原则也适用于所有Java 的整数类型。 因为Java 使用2的补码来存储负数,并且因为Java 中的所有整数都是有符号的,这样应用位运算符可以容易地达到意想不到的...