在剖析该问题前请看如下代码
public static String bytes2HexString(byte[] b) {
String
ret = "";
for (int i = 0; i < b.length; i++) {
String hex =
Integer.toHexString(b[ i ] & 0xFF);
if (hex.length() == 1) {
hex = '0'
+ hex;
}
ret += hex.toUpperCase();
}
return
ret;
}
上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和
0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
b[ i ] &
0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i
]);,将byte强转为int不行吗?答案是不行的.
其原因在于:
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
在这里先温习下计算机基础理论
byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说0000 0001代表的是数字1
1000
0000代表的就是-1
所以正数最大位0111 1111,也就是数字127
负数最大为1111 1111,也就是数字-128
上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码
分享到:
相关推荐
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
byte数组、十进制、十六进制间的两两转换
在Java编程中,将十六进制位串转化为byte数组是一项常见的操作,特别是在处理二进制数据、网络通信或者加密解密等领域。这篇博文"把十六进制的位串转化为byte数组"可能就是针对这个主题提供了一个实用的方法或工具。...
* 八进制转换为十六进制:先将八进制数转换为二进制数,再将二进制数转换为十六进制数。 * 十六进制转换为八进制:先将十六进制数转换为二进制数,再将二进制数转换为八进制数。 五、总结复习 进制数之间的转换是...
5. **十六进制转二进制**:先将十六进制转换为十进制,再转为二进制。例如: ```java String hex = "1A"; int decimal = Integer.parseInt(hex, 16); String binary = Integer.toBinaryString(decimal); ``` 6. **...
这个示例展示了如何使用`sprintf`将一个字节转换为十六进制字符串,以及如何使用`strtol`将一个十六进制字符串转换回字节。 在实际应用中,你可能会遇到更复杂的情况,比如处理包含多个字节的数组或者字符串,这时...
有时我们需要将不同格式的数据进行相互转换,例如将十六进制数字转换为浮点数。在C#中,这种转换通常涉及到字符串解析、位操作以及浮点数表示的深入理解。本文将详细解释如何实现这个过程,并探讨相关知识点。 首先...
PowerBuilder中的`Hex()`函数可以把整数值转换为十六进制字符串。如果我们要对字符串的每个字符分别转换,需要先将字符串转换成字节序列,然后逐个应用`Hex()`函数。例如: ```pb string strInput = "HelloWorld...
在编程领域,尤其是在C#语言中,十六进制(Hexadecimal)转换是一个常见的操作,它涉及到数字、字符串以及颜色代码等不同数据类型的相互转化。十六进制是一种逢16进1的进位制,通常用0-9和A-F这16个字符表示。在...
-- 转换十六进制字符串为二进制数据 for i = 1, string.len(hexstr) - 1, 2 do local doublebytestr = string.sub(hexstr, i, i+1) local n = tonumber(doublebytestr, 16) if 0 == n then bytesfile:write('\00...
4. 可能包含文件操作,如读取包含十六进制数据的文件并转换为字节数组。 综上所述,"十六进制转字节工具"对于C语言开发者来说,是一个实用的辅助工具,能够方便地处理十六进制数据和字节操作,简化编程过程,提高...
在C#中,有时我们需要将十六进制数值转换为浮点数,以进行各种数学计算和数据处理。本篇将深入探讨如何在C#中实现这一转换。 首先,理解浮点数的存储方式是至关重要的。在计算机内部,浮点数通常是用IEEE 754标准来...
根据给定文件的信息,我们可以总结出以下详细的IT知识点: ...此程序不仅包含了基本的输入输出功能,还涉及到了数据验证、转换算法等关键步骤,对于学习十六进制与二进制转换具有很好的参考价值。
总的来说,理解IEEE 754浮点数的结构以及如何进行十六进制转换和字节顺序调整是进行高效且准确的跨平台数据交换的关键。通过提供的`IEEE754.exe`程序,用户可能能够直观地体验和学习这个过程,帮助他们在实际开发中...
在上述代码中,`Integer.parseInt(hexNumber, 16)`使用了第二个参数16来指定解析的基数为16,从而将十六进制字符串转换为十进制整数。然后,通过`result ^= binaryValue`进行异或运算,将每个十六进制数的结果累加到...
1. 将字节数组转换为十六进制字符数组:`public static char[] encodeHex(byte[] data)` 该方法将字节数组转换为十六进制字符数组。该方法可以将字节数组转换为小写或大写的十六进制字符数组,可以根据需要选择。 ...
2. 十六进制转换:将二进制数转换为十六进制,可以更简洁地表示大量的二进制数据。 3. 文件偏移(Offset):在文件中的位置,以字节为单位,帮助我们定位到特定的数据。 4. 差异标记:比较工具用颜色或特殊字符...
在IT领域,尤其是在编程与数据处理中,十六进制与字符编码之间的转换是一项常见的需求,尤其是在处理非英文字符集如中文汉字时。本篇文章将深入探讨如何在C#语言中实现十六进制与中文汉字之间的相互转换,这不仅对...
而在计算机科学中,十六进制(Hexadecimal)是一种基数为16的计数系统,由0-9和A-F这16个符号组成,常用于表示二进制数据,因为每四位二进制可以简洁地表示为一位十六进制数。 在Delphi中,进行字符串到十六进制的...
在C#编程中,字符串与十六进制之间的转换是一个常见的需求,特别是在处理数据存储、网络传输或者加密解密等场景。下面将详细讲解如何在C#中实现这一过程。 首先,我们要了解基本概念。字符串是由Unicode字符组成的...