有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将存储在单个字节(长字节)中的值分离?

我目前正在尝试学习如何解决作业中的问题

•该类存储工作小时数,hours,是一个很长的时间,是一个压缩的小时数版本

  • 小时输入介于0.0和24.0之间(小数点后一位)

  • 小时输入*10介于0和240之间。方便地将其放入无符号字节中

  • 一个长文件可以保存8个字节

  • hours是一个长字符,将最低有效7字节设置为按比例缩放的小时条目(如果有帮助,则设置为十进制小时)。星期六的小时数存储在最右边的字节中:格式类似于00-FR-TH-WE-TU-MO-SU-SA,其中每两个字母代表一个字节,从高到低

我的问题是,我该怎么做?如何将0和240之间的某个值存储在long中的某个字节位置,并确保它们保持分离

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    Java没有无符号类型。为一周中的每一天声明一个long。使用operators将每天的值移动到所需的字节位置,然后使用[按位]将每天与另一个存储整个星期的long变量组合

    long saturday = 17;
    long sunday = 18;
    long monday = 19;
    long tuesday = 20;
    long wednesday = 21;
    long thursday = 22;
    long friday = 23;
    long week = (saturday * 10) | ((sunday * 10) << 8)
                                | ((monday * 10) << 16)
                                | ((tuesday * 10) << 24)
                                | ((wednesday * 10) << 32)
                                | ((thursday * 10) << 40)
                                | ((friday * 10) << 48);
    

    为了检索每天的值,对变量week执行相反的操作。例如,要检索星期一的值,请将week的值向右移动,以便星期一的值占用最低有效位,然后执行[按位]以获取实际值。由于该值乘以10,只需除以10即可得到原始值,如图所示:

    long mon = ((week >> 16) & 0xFF) / 10;