这几个函数的意思

wenxinfly 2005-10-05 08:35:39
template <class T>
__int64 read_int(int cb, const T r0)
{
const unsigned char* r = reinterpret_cast<const unsigned char*>(r0);
__int64 v = 0;
while (cb--)
v = v << 8 | *r++;
return v;
}

template <class T>
__int64 read_int(int cb, const T r, const T s_end)
{
return read_int(cb, r);
}

template <class T>
T write_int(int cb, T w0, __int64 v)
{
unsigned char* w = reinterpret_cast<unsigned char*>(w0);
w += cb;
for (int i = 0; i < cb; i++)
{
*--w = v & 0xff;
v >>= 8;
}
return reinterpret_cast<T>(w + cb);
}

template <class T>
__int64 read_int_le(int cb, const T r0)
{
const unsigned char* r = reinterpret_cast<const unsigned char*>(r0);
r += cb;
__int64 v = 0;
while (cb--)
v = v << 8 | *--r;
return v;
}

template <class T>
__int64 read_int_le(int cb, const T r, const T s_end)
{
return read_int_le(cb, r);
}

template <class T>
T write_int_le(int cb, T w0, __int64 v)
{
unsigned char* w = reinterpret_cast<unsigned char*>(w0);

for (int i = 0; i < cb; i++)
{
*w++ = v & 0xff;
v >>= 8;
}
return reinterpret_cast<T>(w);
}
...全文
245 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceheart 2005-10-20
  • 打赏
  • 举报
回复
像是字节顺序转换用的,跟Java写的程序通信要转换字节顺序,因为它是用的网络字节顺序
wenxinfly 2005-10-20
  • 打赏
  • 举报
回复
曾有一位大虾回答过,不记得了,
aheadyes 2005-10-06
  • 打赏
  • 举报
回复
__int64 read_int(int cb, const T r0)
{
const unsigned char* r = reinterpret_cast<const unsigned char*>(r0);
__int64 v = 0;
while (cb--)
v = v << 8 | *r++;
return v;
}

根据以上代码可以推测,ro为指针,所以read_int应该是读取r0指向的值的二进制位,
并转化为__int64 类型并返回, 具体调用:read_int(sizeof(*ro), r0);
下同:

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧