🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

861閲覧

文字列から表記バイト違いの16進数の数値を取り出す

saku_panda

総合スコア20

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/11/13 02:31

##前提・実現したいこと
文字列から1byte表記と2byte表記16進数の数値を取り出したいです。
コードは書いたのですが、なんだか冗長な気がしています。
もしより良い書き方が浮かんだ方いましたら教えていただけると嬉しいです。

##具体的な例

例えば、2019年11月13日を
2019,11,13に分けて表記すると、

Swift

1// 2019年11月13日の16進数文字列表記 2StringData: String = "07E30B0D"

となります。
ここから年月日それぞれの要素を取り出したいです。

また、例なので最初のみ2byte、以降1byteのみですが、
そうでない場合も想定していただけると助かります。
(今回のように、予めどの順で入っているかは把握できるものとします)

##現在のコード

Swift

1let StringData: String = "07E30B0D" 2var tmpStr: String = "" 3var year: UInt = 0 4var month: UInt = 0 5var day: UInt = 0 6 7for (n,char) in StringData.enumerated(){ 8 tmpStr.append(char) 9 switch n { 10 case 3: 11 year = UInt(tmpStr, radix: 16)! 12 tmpStr = "" 13 break 14 case 5: 15 month = UInt(tmpStr, radix: 16)! 16 tmpStr = "" 17 break 18 case 7: 19 day = UInt(tmpStr, radix: 16)! 20 tmpStr = "" 21 break 22 default: 23 break 24 } 25} 26 27print("year = (year)") 28print("month = (month)") 29print("day = (day)")

皆さまのお力添えお待ちしています。

##使っているツールのバージョンなど補足情報
Swift 5.0
Xcode 11.0
iOS 12.3
MacOS Mojave 10.14.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • 文字列から4文字2文字2文字と分ける
  • 各文字列を16進数変換

とこういう処理になろうかと。
で、どれがわからないでしょうか

投稿2019/11/13 02:35

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saku_panda

2019/11/13 04:12

ご回答ありがとうございます。 一つの文字列の中から、指定範囲分の文字を抜き出す方法が分かりません。 ,やスペースなど、特定の文字を指定して分ける方法は調べられましたが、 結局思い浮かばず記載のようなコードになりました。
saku_panda

2019/11/13 04:24

こちらのqiitaは見つけられていませんでした。助かりました。 素早いご回答をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問