【问题标题】:Swift - Convert an Image's Data to Binary NumberSwift - 将图像的数据转换为二进制数
【发布时间】:2019-10-26 11:30:56
【问题描述】:

是否可以拍摄图像并将其数据转换为二进制?

能够将图像的数据转换为 String,但我不知道现在如何获取该字符串并显示它的二进制等价物。

就此而言,如果我输入一个单词 - any 单词,例如“Hello”,我希望应用程序显示组成它的五个二进制数字:
- 第一个数字是字母“H”的二进制数(或二进制代码)
-第二个数字是字母“e”的二进制数
- 第三个数字是字母“l”的二进制数

等等。

【问题讨论】:

  • 你知道如何将单个数字转换为二进制吗?你想要什么格式的二进制值?作为字符串?你为什么要这个?
  • 尝试阅读 documentation for String 中的“访问字符串的 Unicode 表示”,尤其是“UTF-8 视图”小节。 HTH

标签: swift string encoding binary


【解决方案1】:

您可以从String 中获得binary data

let str = "hello"
let data = str.data(using: .utf8)

如果要获取0/1形式的二进制数据,可以使用,

data?.forEach({ print(String($0, radix: 2)) })

上面的代码打印出data中每个byte对应的binary numbers

编辑:

要获得8 characters long binary numbers,您只需要将append extra 0s 放在string 的开头,即

let binaryArr = data?.map({(byte) -> String in
    var str = String(byte, radix: 2)
    let countToAppend = 8 - str.count
    let extraZerosStr = ([String](repeating: "0", count: countToAppend)).joined()
    str = extraZerosStr + str
    return str
})

print(binaryArr) //for "Hello", it prints ["01001000", "01100101", "01101100", "01101100", "01101111"]

【讨论】:

  • 嘿,这似乎工作得几乎完美 - 除了它为不同类型的输入输出不同数量的 0 和 1。例如,当我输入“1”时,它输出六个字符:“110001”,但当我输入“A”时,它输出七个字符:“1000001”。我所期望的是总是得到一个 字符长的二进制数 - 就像你在这里做的那样:unit-conversion.info/texttools/convert-text-to-binary
  • 更新了答案。看看吧。
  • 就是这样 - 完美!谢谢你先生:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多