在对float类型数据做持久化过程中需要将float转化成byte[] 类型的数据。最简单的办法是将float类型的数据转化成String,然后调用String的getBytes()方法就行了。但是使用这个方式存储的数据占用的磁盘空间更大,一般需要6个字节,而且随着精度越过占用的字节数也越大。
更好的办法是用是先将浮点数转化成int类型,然后将int类型转化成byte[] 数组保存,这样保存的字节长度恒定为4个字节。代码如下:float fvalue= 1.20004f;
byte[] data = byte[4]; int ivalue = Float.floatToIntBits(fvalue); data[0] = (byte)(ivalue >> 24); data[1] = (byte)(ivalue >> 16); data[2] = (byte)(ivalue >> 8); data[3] = (byte) ivalue; return data;
这个操作使用了左移动操作来将int赋值给长度为4的int数组。
如果要将byte[4] 转化为float,可以执行以下操作:
int ivalue = ((data[0] & 0xFF) << 24) | ((data[1] & 0xFF) << 16) | ((data[2] & 0xFF) << 8) | (data[3] & 0xFF); System.out.println(Float.intBitsToFloat(ivalue));
long 和byte[]的相互转换:
long -> byte[]:
static byte[] toArray(long val) { int off = 0; byte[] b = new byte[8]; b[off + 7] = (byte) (val >>> 0); b[off + 6] = (byte) (val >>> 8); b[off + 5] = (byte) (val >>> 16); b[off + 4] = (byte) (val >>> 24); b[off + 3] = (byte) (val >>> 32); b[off + 2] = (byte) (val >>> 40); b[off + 1] = (byte) (val >>> 48); b[off + 0] = (byte) (val >>> 56); return b; }
byte[]->long
static long toLong(byte[] b) { int off = 0; return ((b[off + 7] & 0xFFL) << 0) + ((b[off + 6] & 0xFFL) << 8) + ((b[off + 5] & 0xFFL) << 16) + ((b[off + 4] & 0xFFL) << 24) + ((b[off + 3] & 0xFFL) << 32) + ((b[off + 2] & 0xFFL) << 40) + ((b[off + 1] & 0xFFL) << 48) + (((long) b[off + 0]) << 56); }
相关推荐
using System.IO; …… float f1 = 1.1F MemoryStream s = new MemoryStream(); BinaryWriter w=new BinaryWriter(s );
宽字符通常用 `wchar_t` 类型表示,在C语言中,可以使用 `wchar_t` 类型来声明宽字符变量。 在实际应用中, Unicode 和宽字符是非常重要的概念,它们提供了一种统一的字符编码方式,能够正确地表示世界上绝大多数...
在Java中,类型转换是将一种数据类型转换为另一种数据类型的过程。这一过程分为两种类型,...同时,了解引用数据类型的转换规则和特殊情况下的类型转换,比如解析字符串为数值类型,是进行Java开发时必须要掌握的技能。
- **CString与数学类型转化**:可以使用`Format()`函数将数值格式化为字符串,使用`ATOL()`, `ATOI()`, `ATOF()`等函数将CString转换回数值类型。 - **CString与char\*转换**:使用`GetBuffer()`获取内部缓冲区,...
`CString`与数学类型相互转换** - `_ttoi(CString->int)`:这个函数用于将`CString`对象转换为整型数值。例如,如果你有一个包含数字的`CString`,你可以使用`_ttoi`来获取其对应的整数值。 - `_tstof(CString->...
2. 数学类型与CString的转换:如何将数值类型转换为CString,反之亦然。 3. CString与char*的转换示例:例如使用ATL或MFC的字符串函数进行转换。 4. CString与BSTR型转换:如何在两个Unicode字符串类型间转换。 5. ...
0089 _variant_t与字符串类型的转换 38 0090 ColeVariant与其他数据类型的转换 38 0091 格式化类型 39 2.2 类型转换 39 0092 CString和char*之间的转换 39 0093 char与char*类型应用 39 0094 COLORREF...
1. **数学类型变量与字符串相互转换**:通过`itoa`、`wcstombs`、`_wtoi`等函数实现整数与字符串间的转换。 2. **`CString`, `string`, `char*`与其他数据类型的转换和操作**: - 综合比较:`CString`是MFC中的字符...
2.1 数学类型与字符串相互转换: - 数学类型可以通过格式化输出或输入函数转换为字符串,反之亦然。 - `CString`可以使用`Format`函数将数字转换为字符串,而`ATOF`函数则用于将字符串转换为浮点数。 2.2 CString...
- `CString`可以与`string`、`char*`以及`BSTR`相互转换。 - `CString`与`BSTR`之间的转换可以通过`SysAllocString`和`SysFreeString`进行。 - `CString`与`VARIANT`之间的转换需要使用COM相关的API,如`VARIANT:...
- **自动类型提升**:从低精度类型向高精度类型转换,如`byte` -> `short` -> `int` -> `long` -> `float` -> `double`。 - **强制类型转换**:从高精度类型向低精度类型转换,如`double` -> `int`。这种转换可能会...
与C语言不同,`boolean`在Java中不是数值类型,不能与其他类型相互转换。布尔类型的变量必须使用`boolean`关键字来声明,例如:`boolean truth = true;`它们常用于条件判断语句。 二、文本类:`char`和`String` 1. ...
在Java中,boolean类型非常特殊,它不是数值类型,不能与其他类型相互转换。布尔值主要用于条件判断语句,例如if语句。 文本类包括char和String。char类型用于表示单个字符,它是一个16位的无符号Unicode字符,可以...
#### 三、数据类型的自动转换与显式转换 在Java中,不同类型的数据之间可以相互转换。当参与运算的变量类型不一致时,会自动进行类型转换,具体规则如下: 1. 如果其中一个操作数为`double`类型,则所有操作数都将...
Java中不同类型之间的数据可以相互转换: - **自动类型转换**:当进行赋值或运算时,精度较小的数据类型会自动转换为精度较大的数据类型。 - **转换规则**:`char 。 - **注意事项**: - 当多个数据类型参与运算时...
- **描述**: 包括所有整型数据类型之间的相互转换。 **2.4 REAL_TO-/LREAL_TO–转换** - **描述**: 将浮点数类型转换为其他类型。 **2.5 TIME_TO-/TIME_OF_DAY–转换** - **描述**: 将时间类型转换为其他类型。 ...
Kotlin 提供了丰富的类型转换函数,使得不同类型的数值之间可以相互转换: - **toByte()**: 将数值转换为 `Byte` 类型。 - **toShort()**: 将数值转换为 `Short` 类型。 - **toInt()**: 将数值转换为 `Int` 类型。 -...
5. **二进制与十进制转换**:掌握二进制与十进制之间的相互转换方法。 ### 二、基本概念 1. **编译预处理**:不属于C语言本身,通常用于宏定义、文件包含等,不参与运行时操作。 2. **主函数**:每个C程序中至少...
字符可以通过ASCII码与整数相互转换,如'0'对应的ASCII数值是48,'a'是97,'A'是65。字符可以参与算术运算,大小写字母间可通过加减32进行转换。 9. **整型数据**:整型数据通常占用两个字节,字符型占用一个字节,...