ITADN

This seems not consistent when the frequency is greater than 511

#38OpenRobright20 创建于 2025-05-14
R
Robright20commented
https://github.com/cgzirim/seek-tune/blob/69bd180e991a62a70d95caf868057fbfdb031531/server/shazam/fingerprint.go#L43 ```go package main import ( "fmt" ) // Packs anchorFreq (9 bits), targetFreq (9 bits), and deltaMs (14 bits) into a uint32 func createAddress(anchorFreq, targetFreq, deltaMs uint32) uint32 { return (anchorFreq << 23) | (targetFreq << 14) | deltaMs } // Unpacks the 32-bit address back into anchorFreq, targetFreq, and deltaMs func parseAddress(address uint32) (anchorFreq, targetFreq, deltaMs uint32) { anchorFreq = (address >> 23) & 0x1FF // 9 bits: bits 23-31 targetFreq = (address >> 14) & 0x1FF // 9 bits: bits 14-22 deltaMs = address & 0x3FFF // 14 bits: bits 0-13 return } func main() { var anchorFreq uint32 = 719 // within 9-bit range var targetFreq uint32 = 351 // within 9-bit range var deltaMs uint32 = 34567 // within 14-bit range address := createAddress(anchorFreq, targetFreq, deltaMs) fmt.Printf("Packed address: %032b (%d)\n", address, address) a, t, d := parseAddress(address) fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d) } // Packed address: 01100111110101111100011100000111 (1742194439) // Decoded -> anchorFreq: 207, targetFreq: 351, deltaMs: 1799 func main() { var anchorFreq uint32 = 511 // within 9-bit range var targetFreq uint32 = 200 // within 9-bit range var deltaMs uint32 = 12345 // within 14-bit range address := createAddress(anchorFreq, targetFreq, deltaMs) fmt.Printf("Packed address: %032b (%d)\n", address, address) a, t, d := parseAddress(address) fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d) } // Packed address: 11111111101100100011000000111001 (4289867833) // Decoded -> anchorFreq: 511, targetFreq: 200, deltaMs: 12345 ```
0 条评论