回答編集履歴

2 アドレスの取得方法を変更。

fuzzball

fuzzball score 16066

2016/04/04 09:10  投稿

`NSData(bytes:, length:)`のlengthはバイト数です。配列の要素数ではありません。
```swift
let data = NSData(bytes: [value], length: sizeofValue(value))
var data = NSData(bytes: &value, length: sizeofValue(value))
```
真面目にアドレスを取得しようとして挫折したので[value]のままです。
真面目にアドレスを取得しようとして挫折した‥のですが、Stripeさんの回答を見て&を使うように修正しました。(let → var)
ちなみに、arc4random_uniformで取得した場合はUInt32なのでサイズは4バイトです。
```
print("sizeofValue(value)=\(sizeofValue(value))")
//sizeofValue(value)=4
```
###文字列にしてしまえば
色々とスッキリするのですが。
```
let value = arc4random_uniform(2000)
let data = String(value).dataUsingEncoding(NSUTF8StringEncoding)
print("\(value) -> \(data!)")
       
let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("\(data!) -> \(str!.intValue)")
```
1 zasetu

fuzzball

fuzzball score 16066

2016/03/29 15:48  投稿

`NSData(bytes:, length:)`のlengthはバイト数です。配列の要素数ではありません。
```swift
let data = NSData(bytes: [value], length: sizeofValue(value))
```
 
真面目にアドレスを取得しようとして挫折したので[value]のままです。  
ちなみに、arc4random_uniformで取得した場合はUInt32なのでサイズは4バイトです。
```
print("sizeofValue(value)=\(sizeofValue(value))")
//sizeofValue(value)=4
```
###文字列にしてしまえば
色々とスッキリするのですが。
```
let value = arc4random_uniform(2000)
let data = String(value).dataUsingEncoding(NSUTF8StringEncoding)
print("\(value) -> \(data!)")
       
let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("\(data!) -> \(str!.intValue)")
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る