Java 将长度为24的字符串转换为长度为4字节的字节数组

Java 将长度为24的字符串转换为长度为4字节的字节数组,java,Java,上面的代码运行良好。 但是我想限制字节数组的大小。byte[]根据我的要求,将字节数改为4字节。 有可能吗 嗯。。。不,不可能将24个字节转换为4个字节 也不可能将24个字符放入4个字节,因为字符总是至少与一个字节一样大 但我认为Jon说得对:自1970年以来的秒数可以容纳4个字节。首先不要将其转换为字符串。您得到了一个日期,它实际上是一个64位的值:自1970年1月1日午夜UTC的Unix纪元以来的毫秒数 如果只有4个字节可用,则需要一个32位的值。如果将毫秒数除以1000,将得到自Unix纪

上面的代码运行良好。 但是我想限制字节数组的大小。byte[]根据我的要求,将字节数改为4字节。
有可能吗

嗯。。。不,不可能将24个字节转换为4个字节

也不可能将24个字符放入4个字节,因为字符总是至少与一个字节一样大


但我认为Jon说得对:自1970年以来的秒数可以容纳4个字节。

首先不要将其转换为字符串。您得到了一个日期,它实际上是一个64位的值:自1970年1月1日午夜UTC的Unix纪元以来的毫秒数

如果只有4个字节可用,则需要一个32位的值。如果将毫秒数除以1000,将得到自Unix纪元以来的秒数。。。这就给了你足够的射程,可以持续到2038年。通过有效地改变历元,您可以进一步显著扩展该范围。如果使用2075年的历元,则应该能够存储大约从2010年到2140年的值。当然,您仍然只能将值存储到第二个粒度

或者,您可以使用毫秒作为粒度,但要缩小范围。不幸的是,这将大大减少范围-约48天。除非你期望的值在一个非常小的范围内,否则这可能不是你的选择


完成32位表示后,有多种方法可以将其转换为字节数组,包括使用DataOutputStream。如果目标是无论如何都要将值写入流,那么就不用麻烦使用中间字节数组。

您是说要将24个字节的信息放入4个字节中?或者你只需要4个字节的信息?@Themerovginian我想把24个字节的字符串放入4个字节的数组中实际上我想把格式的日期yyy-MM-dd'T'HH:MM:ss.SSS'Z'保存到4个字节的数组中。对我来说,这就像问猪是否能在龙卷风的例子中飞翔一样。。。您可以将表示日期的字符串转换为long,但它与问题的标题无关。+1为了补偿无理由否决投票,答案完全正确。
  public static void main(String[] args){
     Date localRecvTime = new Date();           
     DateFormat converter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
     converter.setTimeZone(TimeZone.getTimeZone("GMT"));           
     String ConvertedDate =converter.format(localRecvTime);
     System.out.println(ConvertedDate.length());
     //above statement will print 24

     byte[] dateInBytes=ConvertedDate.getBytes();
     System.out.println(dateInBytes.length);
     //above statement will also print 24       

    }