code: @Nullable
      public static ResourceValue readResValue(ByteBuffer buffer, StringPool stringPool) {
  //        ResValue resValue = new ResValue();
          int size = Buffers.readUShort(buffer);
          short res0 = Buffers.readUByte(buffer);
          short dataType = Buffers.readUByte(buffer);
  
          switch (dataType) {
              case ResValue.ResType.INT_DEC:
                  return ResourceValue.decimal(buffer.getInt());
              case ResValue.ResType.INT_HEX:
                  return ResourceValue.hexadecimal(buffer.getInt());
              case ResValue.ResType.STRING:
                  int strRef = buffer.getInt();
                  if (strRef >= 0) {
                      return ResourceValue.string(strRef, stringPool);
                  } else {
                      return null;
                  }
              case ResValue.ResType.REFERENCE:
                  return ResourceValue.reference(buffer.getInt());
              case ResValue.ResType.INT_BOOLEAN:
                  return ResourceValue.bool(buffer.getInt());
              case ResValue.ResType.NULL:
                  return ResourceValue.nullValue();
              case ResValue.ResType.INT_COLOR_RGB8:
              case ResValue.ResType.INT_COLOR_RGB4:
                  return ResourceValue.rgb(buffer.getInt(), 6);
              case ResValue.ResType.INT_COLOR_ARGB8:
              case ResValue.ResType.INT_COLOR_ARGB4:
                  return ResourceValue.rgb(buffer.getInt(), 8);
              case ResValue.ResType.DIMENSION:
                  return ResourceValue.dimension(buffer.getInt());
              case ResValue.ResType.FRACTION:
                  return ResourceValue.fraction(buffer.getInt());
              default:
                  return ResourceValue.raw(buffer.getInt(), dataType);
          }
      }
docs: read res value, convert from different types to string.