Довольно часто мне нужно упаковать 2 инта в лонг, или из лога получить 2 инта, ну или в шортов сделать инт и т.д.
Это применяется в основном в каких-нибудь Dictionary (или подобных кейсах) в виде ключей, чтобы не городить структуру, да и работать оно будет быстрее.
void ToInts(long a, out int a1, out int a2) { a1 = (int)(a & uint.MaxValue); a2 = (int)(a >> 32); } long ToLong(int a1, int a2) { long b = a2; b = b << 32; b = b | (uint)a1; return b; }
1 min read
0 Comments