It's probably going to work unreliable in many cases (depending upon your needs of course). E.g. the external app using one encoding and your app guesses encoding wrong. Or the external app uses "Hello\0World" as a string but your app deciphers that as separate two strings. Or the external app uses a sequence of several strings and your app treats that as a single string:
let array = ["String1-grizzly", "String2-grizzly", "String3-grizzly"]
array.withUnsafeBytes { buffer in
for i in 0 ..< buffer.count {
print(String(format: "0x%02X", buffer[i]), terminator: ",")
}
print()
}
// 0x53,0x74,0x72,0x69,0x6E,0x67,0x31,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF,
// 0x53,0x74,0x72,0x69,0x6E,0x67,0x32,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF,
// 0x53,0x74,0x72,0x69,0x6E,0x67,0x33,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF
let data = Data([
0x53,0x74,0x72,0x69,0x6E,0x67,0x31,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF,
0x53,0x74,0x72,0x69,0x6E,0x67,0x32,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF,
0x53,0x74,0x72,0x69,0x6E,0x67,0x33,0x2D,0x67,0x72,0x69,0x7A,0x7A,0x6C,0x79,0xEF
])
let string = String(data: data, encoding: .ascii)
print(string)
// String1-grizzlyïString2-grizzlyïString3-grizzlyï
You'd need to apply some heuristics to make it work in the most typical scenarios.