英语翻译int GetEncodedU32(unsigned char*& pos) { int result = pos[0]; if (result & 0x00000080)) { pos++; return result; } result = (result & 0x0000007f) | pos[1]
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/01 23:20:05
英语翻译int GetEncodedU32(unsigned char*& pos) { int result = pos[0]; if (result & 0x00000080)) { pos++; return result; } result = (result & 0x0000007f) | pos[1]
英语翻译
int GetEncodedU32(unsigned char*& pos)
{
int result = pos[0];
if (result & 0x00000080))
{
pos++;
return result;
}
result = (result & 0x0000007f) | pos[1]
英语翻译int GetEncodedU32(unsigned char*& pos) { int result = pos[0]; if (result & 0x00000080)) { pos++; return result; } result = (result & 0x0000007f) | pos[1]
从语法来看是c语言,主要转换的地方就是参数格式,因为在as3中没有char类型并且as3也不需要考虑是指针还是变量本身,而且as3不直接处理内存地址,所以其实这个函数转换成as3没有实际意义、办不到,但是仅仅从语法上来转换的话,可以这样:
function GetEncodedU32(pos:*):int
{
\x05//先将pos转换成字符串
\x05if ((pos is String)==false)
\x05{
\x05\x05pos=String(pos);
\x05}
\x05//但是以下这句就跟原先的函数意义完全变了...
\x05var result:int = pos[0];
\x05if (!(result & 0x00000080))
\x05{
\x05\x05pos++;
\x05\x05return result;
\x05}
\x05result = (result & 0x0000007f) | pos[1]<<7;
\x05if (!(result & 0x00004000))
\x05{
\x05\x05pos += 2;
\x05\x05return result;
\x05}
\x05result = (result & 0x00003fff) | pos[2]<<14;
\x05if (!(result &\x050x00200000))
\x05{
\x05\x05pos += 3;
\x05\x05return result;
\x05}
\x05result = (result & 0x001fffff) | pos[3]<<21;
\x05if (!(result &\x050x10000000))
\x05{
\x05\x05pos += 4;
\x05\x05return result;
\x05}
\x05result = (result & 0x0fffffff) | pos[4]<<28;
\x05pos += 5;
\x05return result;
}
只能帮到这了,楼主如果能详细说明下用这个函数来干什么或许有其他变通的方法来实现~