【问题标题】:Converting int to byte in Android在 Android 中将 int 转换为 byte
【发布时间】:2011-04-01 07:23:37
【问题描述】:

实际上我需要将integer 值与bitmap 通过bluetooth 一起传输。现在我的问题是我需要将integer 作为single byte 值传输.. 是否可以将intconvertint 转换为singlebyte 值.. 并将其作为integer 检索...我试过byteValue() 和casting 东西,但它没有用。如果我的方法是正确的,请帮我解决这个问题或说其他方式。

(每次我使用强制转换时,它都会返回 65535)

【问题讨论】:

  • 我也尝试过将int 转换为char 并尝试转换为byte(尽管它只适用于255)但它没有用......
  • 如果无法直接发送 int 值,请尝试使用序列化
  • 为什么不直接使用字节值,完全不使用整数变量?

标签: java android casting byte int


【解决方案1】:

这个呢?

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);
}

【讨论】:

  • @Dante - 他询问了一个单个字节。
  • @MByD,单个字节无法传达所有信息,所以我提供了要逐字节传输的数组。
  • @Dante:我需要单字节。然后我无法区分Bitmapint
  • @Dante:其他答案?该转换根本不起作用..要清楚我发送位图的长度以及一些数据..所以我需要一个字节的长度..可能..
  • @Dante:这是我要通过Bluetooth发送的格式 (CHAR | CHAR | CHAR | LENGTH | BITMAP) 现在从这里我必须花时间在另一部手机上取回Bitmap。现在清楚了吗?
【解决方案2】:

如果您完全确定,您的 int 变量包含一个字节值 [-128; 127] 那么它应该很简单:

int i = 100; // your int variable
byte b = (byte) i;

【讨论】:

  • 它在转换回int时不起作用。它为每个int返回一些默认
  • @Hussain 您如何以及何时将其转换回来?
  • 我将把它作为ByteArray thro Bluetooth 传递并在那里分隔为int 和其他数据。在 length 的帮助下,我将获得Bitmap tat ..
  • @Hussain 你必须发布一些代码,你的评论并没有让它更清楚。
  • 我尝试过的可能代码不起作用..所以只有我一个人发送了评论...这是我将通过Bluetooth发送的格式 ( CHAR | CHAR | CHAR | LENGTH | BITMAP ) 现在我必须从这个长度取回另一部手机中的Bitmap..
【解决方案3】:

单个字节(8 位)只能包含 2^8 个无符号整数,即 [0, 255]。对于已签名,您松开第一位,范围变为 [-128, 127]。如果您的整数适合,那么一个简单的转换应该可以工作。

【讨论】:

    【解决方案4】:

    适用于 0-255 数字。

    int i = 200; // your int variable
    byte b = (byte)(i & 0xFF);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2020-02-03
      • 2011-08-19
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多