jan*_*dor 16 c# string math integer
早上好,
我正在寻找一种方法来组合两个整数来创建一个唯一的数字,我有两个表,我需要组合成一个具有唯一数字的第三个表,
这些是我的表:
Table A
SchoolID ClassId
107 56644231
107 56644532
107 320110212
Table B
SchoolID ClassId
108 566442310
108 56644532
108 50110212
Run Code Online (Sandbox Code Playgroud)
我需要将这些字段导出到第三个表,将表ID和学校ID组合到一个名为classID的字段中.我需要能够将这些数字组合在一起,然后才能将它们组合在一起,以便将schoolid和classid分开以进行更新.我想连接字符串,'schoolid + '00' + 'classid'因为我知道schoolid将始终是一个3位数字,但我正在寻找其他方式或许数学,我不必使用字符串强制转换.
有数学方法可以做到这一点吗?或者是铸造字符串最好的方法来做到这一点?
我正在使用C#来编写解决方案.
谢谢,
use*_*erx 18
与Magnus Hoff类似,但我建议使用二元友好方法而不是基础10方法.
combinedid = (classid << 8) + schoolid;
Run Code Online (Sandbox Code Playgroud)
然后,后来:
classid = combinedid >> 8;
schoolid = combinedid & 0xFF;
Run Code Online (Sandbox Code Playgroud)
从编程的角度来看,我认为这更直接(明确表示您的学校ID是1字节(0-255),类ID是3字节).
您也可以使用bigint(Long/Int64)轻松完成此操作,使两个int32安全地成为一个int64:
combinedid = ((long)classid << 32) + schoolid;
Run Code Online (Sandbox Code Playgroud)
combinedid = classid*1000 + schoolid
Run Code Online (Sandbox Code Playgroud)
然后,后来:
classid = combinedid / 1000 // Integer division
schoolid = combinedid % 1000
Run Code Online (Sandbox Code Playgroud)
我会像这样结合ID:
ID = ClassID * 1000 + SchoolID
Run Code Online (Sandbox Code Playgroud)
然后你就可以SchoolID这样:
SchoolID = ID % 1000
Run Code Online (Sandbox Code Playgroud)
你可以ClassID这样:
ClassID = ID / 1000
Run Code Online (Sandbox Code Playgroud)