假设有一个 byte[500]数组, 被分割成了 5 个 byte[100]数组, 存于 ArrayList<byte[]> bytesList:
bytesList[0] = byte[100]
bytesList[1] = byte[100]
bytesList[2] = byte[100]
bytesList[3] = byte[100]
bytesList[4] = byte[100]
class BufLocation{
public int BlockIndex;
public int StartPos;
public int EndPos;
}
要求这样一个方法:
ArrayList<BufLocation> getBufLocations(ArrayList<byte[]> bytesList, int startPos, int endPos){
...
}
输入相对于 byte[500]的 startPos 和 endPos, 输出 ArrayList<buflocation>, 比如:
输入 0, 0, 则输出 BufLocation{0, 0, 0} // bytesList[0], startPos=0, endPos=0
输入 0, 199, 则输出 BufLocation{0, 0, 99}, BufLocation{1, 0, 99}
输入 1, 101, 则输出 BufLocation{0, 1, 99}, BufLocation{1, 0, 1}
目前我能想到的方法基本上就是暴利破解, 嵌套一堆的 if else 条件来判断各种情况, 不知道有没有更简洁一些的方案?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.