【发布时间】:2011-11-22 15:52:08
【问题描述】:
我需要从一个 quicktime 文件中读取一个 unsigned int,然后将它写回另一个 quicktime 文件。
目前我将 unsigned int 读入 Long,但在写回它时,我从未设法将确切的数字以 4 个字节写回为 unsigned int。 long 具有我需要写回的正确值。 (例如 3289763894 或 370500) 我什至无法读取小于 Integer.MAX_VALUE 的数字(例如 2997)。
我正在使用以下方法将值写回
public void writeUInt32(long uint32,DataOutputStream stream) throws IOException {
writeUInt16((int) (uint32 & 0xffff0000) >> 16,stream);
writeUInt16((int) uint32 & 0x0000ffff,stream);
}
public void writeUInt16(int uint16,DataOutputStream stream) throws IOException {
writeUInt8(uint16 >> 8, stream);
writeUInt8(uint16, stream);
}
public void writeUInt8(int uint8,DataOutputStream stream) throws IOException {
stream.write(uint8 & 0xFF);
}
任何帮助将不胜感激。
【问题讨论】:
-
在java中没有unsigned int这样的东西。而 long 有 8 个字节。
-
因为 long 是我们得到的最接近无符号整数的东西。
标签: java types unsigned-integer