Skip to content

Instantly share code, notes, and snippets.

@granoeste
Last active September 17, 2019 03:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save granoeste/91a011bb886b6210799620f39f53a6d6 to your computer and use it in GitHub Desktop.
Save granoeste/91a011bb886b6210799620f39f53a6d6 to your computer and use it in GitHub Desktop.
UUIDを16ビットで分割
import kotlinx.coroutines.*
import java.time.LocalDateTime
import java.util.UUID
import java.math.*;
/**
* UUIDを16ビット分割
*/
fun main(args : Array<String>) {
val uuid = UUID.fromString("550e8400-e29b-41d4-a716-446655440000")
println("uuid:$uuid")
println("---")
val msb = uuid.getMostSignificantBits()
val lsb = uuid.getLeastSignificantBits()
println("msb:$msb (0x${"%x".format(msb)})")
println("lsb:$lsb (0x${"%x".format(lsb)})")
val param1 = msb shr 48 and 0xFFFF
val param2 = msb shr 32 and 0xFFFF
val param3 = msb shr 16 and 0xFFFF
val param4 = msb shr 0 and 0xFFFF
val param5 = lsb shr 48 and 0xFFFF
val param6 = lsb shr 32 and 0xFFFF
val param7 = lsb shr 16 and 0xFFFF
val param8 = lsb shr 0 and 0xFFFF
println(" 1: $param1 (0x${"%04x".format(param1)})")
println(" 2: $param2 (0x${"%04x".format(param2)})")
println(" 3: $param3 (0x${"%04x".format(param3)})")
println(" 4: $param4 (0x${"%04x".format(param4)})")
println(" 5: $param5 (0x${"%04x".format(param5)})")
println(" 6: $param6 (0x${"%04x".format(param6)})")
println(" 7: $param7 (0x${"%04x".format(param7)})")
println(" 8: $param8 (0x${"%04x".format(param8)})")
println("---")
val uuidLong = BigInteger(uuid.toString().replace("-",""), 16)
println("uuidLong: $uuidLong")
val param1a = uuidLong.shiftRight(112).and(BigInteger("FFFF", 16)).longValueExact();
val param2a = uuidLong.shiftRight( 96).and(BigInteger("FFFF", 16)).longValueExact();
val param3a = uuidLong.shiftRight( 80).and(BigInteger("FFFF", 16)).longValueExact();
val param4a = uuidLong.shiftRight( 64).and(BigInteger("FFFF", 16)).longValueExact();
val param5a = uuidLong.shiftRight( 48).and(BigInteger("FFFF", 16)).longValueExact();
val param6a = uuidLong.shiftRight( 32).and(BigInteger("FFFF", 16)).longValueExact();
val param7a = uuidLong.shiftRight( 16).and(BigInteger("FFFF", 16)).longValueExact();
val param8a = uuidLong.shiftRight( 0).and(BigInteger("FFFF", 16)).longValueExact();
println(" 1: $param1a (0x${"%04x".format(param1a)})")
println(" 2: $param2a (0x${"%04x".format(param2a)})")
println(" 3: $param3a (0x${"%04x".format(param3a)})")
println(" 4: $param4a (0x${"%04x".format(param4a)})")
println(" 5: $param5a (0x${"%04x".format(param5a)})")
println(" 6: $param6a (0x${"%04x".format(param6a)})")
println(" 7: $param7a (0x${"%04x".format(param7a)})")
println(" 8: $param8a (0x${"%04x".format(param8a)})")
println("---")
val src = 0x3060F0E0
val shift = src shr 24
val mask = 0xFF
val result = shift and mask
println(" src:0b${Integer.toBinaryString(src)} (0x${Integer.toHexString(src)})")
println(" shift:0b${Integer.toBinaryString(shift)}")
println(" mask:0b${Integer.toBinaryString(mask)}")
println("result:0b${Integer.toBinaryString(result)} (0x${Integer.toHexString(result)})")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment