NSDataの挙動がわからない
■環境
Mac/High Sierra 10.13.6/swift4.2/xcode 10.0
下記のようなコードで
var rawArray2:[Int16] = [300,400,500]
let d = NSData(bytes: &rawArray2, length: rawArray2.count*2)
var b = [Int8](repeating: 0, count: rawArray2.count*2)
d.getBytes(&b, length: rawArray2.count*2)
for i in b{
print(i)
}
結果がこのようになりました。
44
1
-112
1
-12
1
公式ドキュメント
https://developer.apple.com/documentation/foundation/nsdata
にて
A static byte buffer that~
という説明だったので、8bitごとに区分けされているバッファだと理解しましたが誤りでしょうか。
Int16の配列をNSDataで扱おうとした時に、256進数で扱われ配列として考えたときに要素数は倍になります。、
例えば300であれば1バイト目が1、2バイト目が44になることを期待していました。
どうも結果からは2バイト目が2桁目に相当するように見受けられます。
まだ、ここまでは想定と逆程度の話なので、仕様ということで片付けられるのですが、
2つ目の要素である400については1桁目は144、二桁目は1となる想定ですが、結果を見ると-112となっています。144-256=-112なので、恐らくそういうことなのだろうと思いましたが、どうしてこのようになるのでしょうか。
そもそもこういう想定自体誤りなのかもしれません。