int long 的转换 我要生成个long型的用户ID, 这个用户ID的前32位是用户所在企业的ID,后32位是自身的ID,我怎么用企业的32位ID生成用户的64位ID,并且生成后怎么分离出32位企业ID, (该用户64位ID怎么通过传进来的企业ID参数,用程序递增生成,像数据库中的标示一样) 谢谢指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大概楼主就是发在Asp.net板块的贴子!! 一帖多发...用位移...int eid = 123;int uid = 456;long id = (eid << 16) + uid;Console.WriteLine("eid:{0}", id >> 16);Console.WriteLine("uid:{0}", id - ((id >> 16) << 16)); [code=C#]// 编码:ulong 用户的64位ID = (ulong)企业的32位ID * uint.MaxValue + (uint)用户的32位ID;// 或者:ulong 用户的64位ID = ((ulong)企业的32位ID << 32) + (uint)用户的32位ID;// 解码:uint 企业的32位ID = 用户的64位ID >> 32;uint 用户的32位ID = 用户的64位ID % uint.MaxValue;// 或者:uint 用户的32位ID = 用户的64位ID & uint.MaxValue;[/code] 假定你有以下Long型的用户IDlong _userId;可以用以下方法分解:byte[] U_buffer = System.BitConverter.GetBytes((long) _userId); //把long转换为内存字节数组int _companyId = System.BitConverter.ToInt32(U_buffer,0); //得到前4字节的int企业IDint _shortUserId = System.BitConverter.ToInt32(U_buffer,4); //得到后4字节的int企业ID组合以与上类似,把_companyId和_shortUserId分别转换为2个内存字节数组,再进行数组组合,最后把这个8字节的数组转换为long数值. 3楼答案错了...更正...int eid = 123;int uid = 456;long id = (((long)eid) << 32) | uid;int eeid = (int)(id >> 32);int uuid = (int)(((long)(id >> 32 << 32)) | id); C#中TextBox文件拖放的问题 对一个TREEVIEW设置了IMAGELIST,接下来有个问题。 Winform方式ExCel 分页打印 问一个简单的一问题 socket 发送接收图片!! 数据绑定 C#中的反射机制??? 怎样在DataGrid中加入comboBox下拉列表?(在线等) 我做好了.NET程序,我在别的机器上安装了后,可是老是说找不到我先前写好的.DLL文件,也就是找不到命名空间 关于关系的问题 如何批量保存新增的数据到SQL? C#调用C++DLL问题。急。。。在线等待。。。
int eid = 123;
int uid = 456;
long id = (eid << 16) + uid;
Console.WriteLine("eid:{0}", id >> 16);
Console.WriteLine("uid:{0}", id - ((id >> 16) << 16));
ulong 用户的64位ID = (ulong)企业的32位ID * uint.MaxValue + (uint)用户的32位ID;
// 或者:
ulong 用户的64位ID = ((ulong)企业的32位ID << 32) + (uint)用户的32位ID;
// 解码:
uint 企业的32位ID = 用户的64位ID >> 32;
uint 用户的32位ID = 用户的64位ID % uint.MaxValue;
// 或者:
uint 用户的32位ID = 用户的64位ID & uint.MaxValue;[/code]
byte[] U_buffer = System.BitConverter.GetBytes((long) _userId); //把long转换为内存字节数组
int _companyId = System.BitConverter.ToInt32(U_buffer,0); //得到前4字节的int企业ID
int _shortUserId = System.BitConverter.ToInt32(U_buffer,4); //得到后4字节的int企业ID组合以与上类似,把_companyId和_shortUserId分别转换为2个内存字节数组,再进行数组组合,最后把这个8字节的数组转换为long数值.
int uid = 456;
long id = (((long)eid) << 32) | uid;
int eeid = (int)(id >> 32);
int uuid = (int)(((long)(id >> 32 << 32)) | id);