ぜん通。

<ぜんつう>ネトゲとかソシャゲとか、雑記。

   

NSData内のバイナリ(16進数)を10進数の数値に変換する

通信周りでSocketをバイナリ単位で制御するとこの辺よく使うからメモ。
NSData内のバイナリ(16進数)を10進数の数値に変換する。(64bit長)
NSData *data
NSMutableString *t = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:@"%@",data]];
[t deleteCharactersInRange:NSMakeRange(0,1)];
[t deleteCharactersInRange:NSMakeRange(8,1)];
[t deleteCharactersInRange:NSMakeRange(16,1)];
 
unsigned long long value;
if ([ [ NSScanner scannerWithString:t ] scanHexLongLong:&value ] ) { 
   NSLog(@"value = %llu", value);
}

すごい強引なやり方ですが・・・
NSData内のバイナリを%@で出力してそれを文字列として保存。
その文字列から「<>」と半角スペースを削除する。
完全な16進数の文字列だけにしてから scanHexLongLongで16進数をLongLong型の整数に。
たぶんバイナリから直接整数値にする方法なんていくらでもあるんだろうけど、今回は諸事情でこの書き方で。

基本はMessagePackを使えば整数値をそのままエンディアン気にせず送れるんですけどねー

拍手[2回]

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

TRACKBACK

Trackback URL:

カウンター

マジモン窓

プロフィール

HN:
Zenchuu
性別:
男性
職業:
えんじにあ
自己紹介:
いわゆるオタク系。
HNのzenchuuは子供のころからのあだ名。
iPhoneアプリの制作〜運用を仕事にしてます。
人間強度は最高レベルだと自負。
友達?要らねーよヽ(´ー`)ノ

Twitter

いろいろ

Copyright ©  -- ぜん通。 --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS /  /