Share
Embed
Transcript
56 slides
-
func qrCode(data: Data?) -" UIImage? { let transform = CGAffineTransform(scaleX:
10, y: 10) guard let data, let filter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data, "inputCorrectionLevel": "Q"]), let ciImage = filter.outputImage?.transformed(by: transform) let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } https://developer.apple.com/documentation/coreimage/cifilter https://developer.apple.com/documentation/coreimage/ciqrcodegenerator -
func qrCode(data: Data?) -" UIImage? { let transform = CGAffineTransform(scaleX:
10, y: 10) guard let data, let filter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data, "inputCorrectionLevel": "Q"]), let ciImage = filter.outputImage?.transformed(by: transform) let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } https://developer.apple.com/documentation/coreimage/cifilter https://developer.apple.com/documentation/coreimage/ciqrcodegenerator -
func qrCode(data: Data?) -" UIImage? { let transform = CGAffineTransform(scaleX:
10, y: 10) guard let data, let filter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data, "inputCorrectionLevel": "Q"]), let ciImage = filter.outputImage?.transformed(by: transform) let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } https://developer.apple.com/documentation/coreimage/cifilter https://developer.apple.com/documentation/coreimage/ciqrcodegenerator -
func qrCode(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16), let string = String(byte: bint.getBytes(), encoding: .utf16BigEndian) else { return nil } let transform = CGAffineTransform(scaleX: 10, y: 10) guard let data = string.data(using: encoding), let QRFilter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
func qrCode(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16), let string = String(byte: bint.getBytes(), encoding: .utf16BigEndian) else { return nil } let transform = CGAffineTransform(scaleX: 10, y: 10) guard let data = string.data(using: encoding), let QRFilter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } func qrCode(of binary: String) -" UIImage? -
func qrCode(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16), let string = String(byte: bint.getBytes(), encoding: .utf16BigEndian) else { return nil } let transform = CGAffineTransform(scaleX: 10, y: 10) guard let data = string.data(using: encoding), let QRFilter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } func qrCode(of binary: String) -" UIImage? -
func qrCode(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16), let string = String(byte: bint.getBytes(), encoding: .utf16BigEndian) else { return nil } let transform = CGAffineTransform(scaleX: 10, y: 10) guard let data = string.data(using: encoding), let QRFilter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
String(16ਐ) "6e79dc68" BInt(10ਐ) 1853480040 String “㧅`“ Data 6e79616e ṖͷόΠφϦX import
BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] -
String(16ਐ) "6e79dc68" BInt(10ਐ) 1853480040 Data 6e79616e ṖͷόΠφϦX String “㧅`“ Bytes
/ [UInt8] [01101110, 01111001, 11011100, 1101000] import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) -
String(16ਐ) "6e79dc68" ṖͷόΠφϦX import BigNumber let binary = "6e79dc68" let
bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) Data 6e79616e -
String(16ਐ) "6e79dc68" Data 0×3665373964633638 Data 6e79616e ṖͷόΠφϦX let binary =
"6e79dc68" let data = binary.data(using: .utf8) -
String(16ਐ) "6e79dc68" BInt(10ਐ) 1853480040 ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ import BigNumber let binary
= "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) Data 6e79616e -
String(16ਐ) "6e79dc68" BInt(10ਐ) 1853480040 ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ Bytes / [UInt8] [01101110,
01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) 1101110011110011101110001101000 Data 6e79616e -
String(16ਐ) "6e79dc68" BInt(10ਐ) 1853480040 ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ Bytes / [UInt8] [01101110,
01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) String “㧅`“ Data 6e79616e -
BInt(10ਐ) 1853480040 Data 6e79616e ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ String(16ਐ) "6e79dc68" String “㧅`“
Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) -
BInt(10ਐ) 1853480040 Data 6e79616e ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ String(16ਐ) "6e79dc68" String “㧅`“
Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) -
Data 6e79616e ṖͷόΠφϦX String(16ਐ) "6e79dc68" String “㧅`“ Bytes / [UInt8]
[01101110, 01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ BInt(10ਐ) 1853480040 8όΠτͷΛ֨ೲ͢Δσʔλܕ import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) iOS17·Ͱ͜ΕͰͳ͔ͬͨᴷᴷᴷᴷᴷᴷ -
BInt(10ਐ) 1853480040 String nil Data 6e79616e ṖͷόΠφϦX 8όΠτͷΛ֨ೲ͢Δσʔλܕ String(16ਐ) "6e79dc68"
import BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bing?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] 2ਐͰ8Ϗοτ·Ͱ֨ೲͰ͖Δܕ wow -
Special thanks: omochimetal͞Μ 6e79 dc68 αϩήʔτϖΞͷยׂΕ let binary = "6e79dc68"
/* ... */ let string = String(bytes: bytes!, encoding: .utf16BigEndian) αϩήʔτϖΞ ্Ґαϩήʔτ D800ʙDBFF ԼҐαϩήʔτ DC00ʙDFFF + αϩήʔτϖΞҎ֎Ͱσίʔυࣦഊ͠ͳ͍ ͏Ұํʁ -
σίʔυࣦഊ࣌ͷ String nil String “㧅`“ CoreFoundation swift-foundation let binary =
"6e79dc68" /* ... */ let string = String(bytes: bytes!, encoding: .utf16BigEndian) -
BInt(10ਐ) 1853480040 String nil Data 6e79616e ṖͷόΠφϦX String(16ਐ) "6e79dc68" import
BigNumber let binary = "6e79dc68" let bint = BInt(binary, radix: 16) let bytes = bing?.getBytes() let string = String(bytes: bytes!, encoding: .utf16BigEndian) let data = string?.data(using: .utf16BigEndian) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] ԿͰΤϯίʔυ͞Εͨͷ͔ Θ͔Βͳ͍ ͳΜͰ͍͍͔Β Ұ୴σίʔυ͍ͨ͠ -
let binary = "6e79dc68" let bint = BInt(binary, radix: 16)
let bytes = bint?.getBytes() let string: String? = if let str = String(bytes: bytes!, encoding: .utf16BigEndian) { str } else if let str = String(bytes: bytes!, encoding: .utf16LittleEndian) { str } else if let str = String(bytes: bytes!, encoding: .utf16) { str } else if let str = String(bytes: bytes!, encoding: .isoLatin1) { str } else { nil } -
let binary = "6e79dc68" let bint = BInt(binary, radix: 16)
let bytes = bint?.getBytes() let string: String? = if let str = String(bytes: bytes!, encoding: .utf16BigEndian) { str } else if let str = String(bytes: bytes!, encoding: .utf16LittleEndian) { str } else if let str = String(bytes: bytes!, encoding: .utf16) { str } else if let str = String(bytes: bytes!, encoding: .isoLatin1) { str } else { nil } ૯ͨΓ େ࡞ઓ -
BInt(10ਐ) 1853480040 String ṖͷόΠφϦX import BigNumber let binary = "6e79dc68"
let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string: String? = if let str = String( bytes: bytes!, encoding: .???) { str } else { ... } let data = string?.data(using: .???) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] Data 6e79616e String(16ਐ) "6e79dc68" -
BInt(10ਐ) 1853480040 String ṖͷόΠφϦX import BigNumber let binary = "6e79dc68"
let bint = BInt(binary, radix: 16) let bytes = bint?.getBytes() let string: String? = if let str = String( bytes: bytes!, encoding: .???) { str } else { ... } let data = string?.data(using: .???) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] Data 6e79616e String(16ਐ) "6e79dc68" ͳΜͰ͍͍͔Β Ұ୴σίʔυ͍ͨ͠ -
BInt(10ਐ) 1853480040 String ṖͷόΠφϦX import BigNumber let binary = "6e79dc68"
let bint = BInt(binary, radix: 16) let bytes = bing?.getBytes() let string: String? = if let str = String( bytes: bytes!, encoding: .???) { str } else { ... } let data = string?.data(using: .???) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] Data 6e79616e String(16ਐ) "6e79dc68" ͳΜͰ͍͍͔Β Ұ୴σίʔυ͍ͨ͠ ͜Ε͍Δʁ -
BInt(10ਐ) 1853480040 ṖͷόΠφϦX import BigNumber let binary = "6e79dc68" let
bint = BInt(binary, radix: 16) let bytes: [UInt8] = bint?.getBytes() let data: Data = Data(bytes) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] Data 6e79616e String(16ਐ) "6e79dc68" -
BInt(10ਐ) 1853480040 ṖͷόΠφϦX import BigNumber let binary = "6e79dc68" let
bint = BInt(binary, radix: 16) let bytes: [UInt8] = bing?.getBytes() let data: Data = Data(bytes) Bytes / [UInt8] [01101110, 01111001, 11011100, 1101000] Data 6e79616e String(16ਐ) "6e79dc68" -
func qrCode(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16) else { return nil } let bytes: [UInt8] = bint.getBytes() let data: Data = Data(bytes) let transform = CGAffineTransform(scaleX: 10, y: 10) guard let QRFilter = CIFilter(name: ”CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
23ίʔυͷόʔδϣϯ όʔδϣϯ1 21×21 (M)14byte όʔδϣϯ10 57×57 (M)213byte όʔδϣϯ40 177×177 (M)2,331byte
όʔδϣϯ5 37×37 (M)84byte ࢀߟ: https://www.qrcode.com/about/version.html -
func qrCode(data: Data?) -" UIImage? { let transform = CGAffineTransform(scaleX:
10, y: 10) guard let data, let filter = CIFilter(name: “CIQRCodeGenerator”, parameters: ["inputMessage": data, "inputCorrectionLevel": "Q"]), let ciImage = filter.outputImage?.transformed(by: transform) let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
func qrCodeVersion5(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16) else { return nil } let bytes: [UInt8] = bint.getBytes() let maxBinaryLength = 84 let shortage = maxBinaryLength - bytes.count if shortage > 0 { bytes.insert(contentsOf: Array(repeating: 0, count: shortage), at: 0) } let data: Data = Data(bytes) guard let QRFilter = CIFilter(name: ”CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
func qrCodeVersion5(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16) else { return nil } let bytes: [UInt8] = bint.getBytes() let maxBinaryLength = 84 let shortage = maxBinaryLength - bytes.count if shortage > 0 { bytes.insert(contentsOf: Array(repeating: 0, count: shortage), at: 0) } let data: Data = Data(bytes) guard let QRFilter = CIFilter(name: ”CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
func qrCodeVersion5(of binary: String) -" UIImage? { guard let bint
= BInt(binary, radix: 16) else { return nil } let bytes: [UInt8] = bint.getBytes() let maxBinaryLength = 84 let shortage = maxBinaryLength - bytes.count if shortage > 0 { bytes.insert(contentsOf: Array(repeating: 0, count: shortage), at: 0) } let data: Data = Data(bytes) guard let QRFilter = CIFilter(name: ”CIQRCodeGenerator”, parameters: ["inputMessage": data]), let ciImage = QRFilter.outputImage?.transformed(by: transform), let cgImage = CIContext().createCGImage(ciImage, from: ciImage.extent) else { return nil } return UIImage(cgImage: cgImage) } -
ϚεΫύλʔϯ 000 Ϟʔυࢦࣔࢠ (i × j) % 2 + (i
× j) % 3 (͓·͚) -
ϚεΫύλʔϯ 000 Ϟʔυࢦࣔࢠ (i × j) % 2 + (i
× j) % 3 XOR = 0100 → 8ϏοτόΠτϞʔυͩʂ (͓·͚)