Swift equivalent to Objective-C FourCharCode single quote literals (e.g. 'TEXT')

后端 未结 7 2336
青春惊慌失措
青春惊慌失措 2021-02-20 13:05

I am trying replicate some Objective C cocoa in Swift. All is good until I come across the following:

// Set a new type and creator:
unsigned long type = \'TEXT\         


        
7条回答
  •  走了就别回头了
    2021-02-20 13:34

    I'm using this in my Cocoa Scripting apps, it considers characters > 0x80 correctly

    func OSTypeFrom(string : String) -> UInt {
      var result : UInt = 0
      if let data = string.dataUsingEncoding(NSMacOSRomanStringEncoding) {
        let bytes = UnsafePointer(data.bytes)
        for i in 0..

    Edit:

    Alternatively

    func fourCharCodeFrom(string : String) -> FourCharCode
    {
      assert(string.count == 4, "String length must be 4")
      var result : FourCharCode = 0
      for char in string.utf16 {
        result = (result << 8) + FourCharCode(char)
      }
      return result
    }
    

    or still swiftier

    func fourCharCode(from string : String) -> FourCharCode
    {
      return string.utf16.reduce(0, {$0 << 8 + FourCharCode($1)})
    }
    

提交回复
热议问题