`

Java 转换UNSIGNED byte

    博客分类:
  • Java
阅读更多

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数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    学习文档_JAVA中Integer和Byte转换.doc

    在Java编程语言中,Integer和Byte之间的转换是常见的操作,特别是在处理二进制数据或网络通信时。本文档主要探讨了如何在Java中实现这两种数据类型的转换,包括有符号和无符号的转换。 首先,Integer在Java中占用4...

    java byte数组与int,long,short,byte的转换实现方法

    本文将详细介绍如何在Java中将`byte`数组与其他基本数据类型(如`int`、`long`、`short`、`byte`)之间进行转换。 首先,我们来看`byte`到`int`的转换。Java中的`byte`类型是8位的,取值范围是-128到127。如果要将...

    16进制文件转换成byte及数组

    - **Java**:使用`Byte.parseByte(hexString, 16)`将16进制字符串转换为byte,使用`byte[] bytes = new byte[hexStringLength / 2]`创建数组,然后通过循环将byte值存入数组。 - **Python**:使用`bytes.fromhex...

    MySql于Java数据类型对应列表

    **JAVA类型:** `java.lang.byte[]` **JDBC类型:** -4 **描述:** `BLOB` 类型用于存储二进制数据,如图片、音频等。L代表最大长度,N表示默认值或额外的长度。在Java中,该类型通常被映射为字节数组 `byte[]`。 ##...

    java用modbus通信.zip

    首先,`serotonin-utils-2.1.7.jar` 是一个实用工具库,可能包含了对Modbus通信的一些辅助功能,如数据转换、异常处理等。Serotonin项目通常提供与Modbus相关的组件,这可能是一个通用的工具集,为开发人员提供便利...

    实验Java的基本数据类型和作业流程控制结构.doc

    需要注意的是,在 Java 语言中没有任何无符号 unsigned 类型。 二、浮点数类型 Java 语言中有两种浮点数类型:float 和 double。float 占 4 字节空间,double 占 8 字节空间。在 Java 语言中,直接写出的浮点数被...

    [JAVA]使用JNI技术实现JAVA程序调用dll

    1. 编写一个 Java 类,这个类包含的方法是按照设备商提供的 .h 文件经过变形/转换处理过的,并且必须使用 native 定义。这个地方需要注意的问题是 Java 程序中定义的方法不必追求和厂商提供的头文件列出的方法具有...

    AES Int数组加密Java C++

    unsigned char* input = (unsigned char*)intArray; // 将Int数组转换为字节数组 unsigned char* output = new unsigned char[len]; AES_cbc_encrypt(input, output, len, &aes_key, iv, AES_ENCRYPT); ``` 4. 解密...

    des_aes.zip

    保证可用。java和c ,c++的des, aes加密结果一致源码。从openssl提取了c代码,无任何依赖。使用方法:在java代码DESUtil.java中...已避开的坑:java的byte是-128~127 ,c++中是0-255, 代码做了转换,否则key不一致

    DES加密算法(JAVA和C语言描述)结果一致

    // 将字节转换为十六进制字符串的辅助方法 private static String bytesToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte b : bytes) { result.append(String.format("%02x", b &...

    JAVA程序设计_第3章1

    这意味着在Java中,你不能声明像`unsigned int`这样的变量,也不能进行无符号整数和有符号整数之间的隐式转换,这有助于减少因类型转换不当导致的错误。 Unicode编码在Java中占据2个字节,虽然Unicode标准允许4个...

    android平台基于ndk c语言和java语言的md5加密

    unsigned char digest[MD5_DIGEST_LENGTH]; MD5_Final(digest, &context); for (int i = 0; i ; ++i) { sprintf(output + (i * 2), "%02x", digest[i]); } output[32] = '\0'; } ``` 这段代码使用OpenSSL库...

    MD5算法的实现(C++、C、Java)

    2. `void update(const unsigned char *data, size_t len)` - 更新输入数据。 3. `void finalize()` - 完成哈希计算。 4. `std::string digest()` - 返回16字节摘要的32字符十六进制表示。 在Java中,实现MD5可以...

    二进制与各种类型的数据转换.docx

    本文档主要讨论了不同编程语言(如C、C++、C#、Java和Objective-C)中二进制数据与各种类型数据之间的转换。 1. **二进制数组与整型变量的转换**: - 当我们将二进制数组(如`byte[] temp = {0,0,0,0,0,0,0,15};`...

    50个Java面试题

    - 选项 B `0` 到 `2^32 - 1` 错误,这是 `unsigned int` 的取值范围,在 Java 中没有 `unsigned int`。 - 选项 C `-2^15` 到 `2^15 - 1` 错误,这是 `short` 类型的取值范围。 - 选项 D `-2^31` 到 `2^31 - 1` 正确...

    把真彩色BMP位图转化为二维数组

    unsigned char *px = new unsigned char[bm.bmHeight * bm.bmWidthBytes]; // 读取位图数据 GetBitmapBits(hBmp, bm.bmHeight * bm.bmWidthBytes, px); ``` ### 总结 本篇内容介绍了如何将BMP格式的位图转换为二...

    Java数据类型与MySql数据类型对照表

    最后,对于BLOB类型,存储图片等二进制数据时,Java会将图片转换为byte[],然后存入数据库。而在MySQL中,可以使用PreparedStatement的setBytes方法设置BLOB字段的值。 理解这些对照关系有助于在Java应用程序中高效...

    JOGL读取png图片

    gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, GL2.GL_RGBA, width, height, 0, GL2.GL_RGBA, GL2.GL_UNSIGNED_BYTE, textureData); ``` 以上代码创建了一个新的纹理,并将其与加载的PNG图像数据关联。注意,纹理坐标系统...

    解析大端模式和小端模式

    大端模式是指在多字节数据类型中,最高有效字节(Most Significant Byte, MSB)被存放在内存中的最低地址处,而最低有效字节(Least Significant Byte, LSB)则被存放在最高地址处。例如,对于一个十六进制数值0x...

Global site tag (gtag.js) - Google Analytics