实际上,我需要通过蓝牙将整数值与位图一起传输。现在我的问题是我需要将整数作为单个字节值传输。是否有可能将int转换为单个字节值,并在那里检索它作为整数?我尝试了byteValue()和强制转换,但都没有用。如果我的方法正确,请帮助我解决这个问题,或者提供其他方法。
(每次使用强制转换时都会返回65535)
public static byte[] intToByteArray(int a)
{
byte[] ret = new byte[4];
ret[3] = (byte) (a & 0xFF);
ret[2] = (byte) ((a >> 8) & 0xFF);
ret[1] = (byte) ((a >> 16) & 0xFF);
ret[0] = (byte) ((a >> 24) & 0xFF);
return ret;
}
并且
public static int byteArrayToInt(byte[] b)
{
return (b[3] & 0xFF) + ((b[2] & 0xFF) << 8) + ((b[1] & 0xFF) << 16) + ((b[0] & 0xFF) << 24);
}
char
是2个字节。 - Dante May Codeint
即(LENGTH)。怎么办?有什么方法吗? - HussainCHAR|CHAR|CHAR
,我认为你可以获取CHAR|CHAR|CHAR|INT
。不需要进行转换...如果我的假设是错误的(你无法读取INT
),那么我相信你可以获取CHAR|CHAR|CHAR|CHAR|CHAR
,最后2个CHAR|CHAR
是INT
的CHAR
数组。这类似于我在答案中展示的BYTE
数组的转换。 - Dante May Code如果您完全确定,您的int变量包含一个字节值[-128; 127],那么这应该很简单:
int i = 100; // your int variable
byte b = (byte) i;
int
时它无法工作。对于每个int
,它都会返回某个默认值。 - HussainByteArray
传递,并将其分离为int
和其他数据。借助length,我将获取可用于该操作的Bitmap
。 - HussainBluetooth
发送的格式(CHAR | CHAR | CHAR | LENGTH | BITMAP)。现在我需要从中获取长度以便在另一部移动设备上获取位图。 - Hussain一个字节(8位)只能包含2的8次方个无符号整数,即[0, 255]。对于有符号整数,你会失去第一位,范围变为[-128, 127]。如果你的整数适合这个范围,那么一个简单的类型转换就可以解决。
适用于0-255的数字。
int i = 200; // your int variable
byte b = (byte)(i & 0xFF);
int
转换为char
,并尝试将其转换为byte
(即使它只能工作到255),但这没有用... - Hussain