質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2592閲覧

charの配列に16進数を10進数にして1つの文字列を表示させたい

shunx2

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/02 01:46

編集2018/07/02 02:57

例としてchar型の配列があり、そのなかに
16進数があります。
それを1つのstring型で数値を文字列としてもたせたいのですがどうやればよろしいでしょうか。ご教授願います。

unsigned char senId[6] ;
senId[0] = 0x53 ;
senId[1] = 0x41 ;
senId[2] = 0x4E ;
senId[3] = 0x00 ;
senId[4] = 0x41 ;
senId[5] = 0x53 ;

これらの16進数二桁ずつの10進数を変化して繋げて12桁の文字列を持ちたいです。
std::string strSenId ; //ここに"836578006583"が入りたい
よろしくお願いします。

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

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

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

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

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

cateye

2018/07/02 01:59 編集

senIdは0〜4までの領域しかありません。
nob.

2018/07/02 02:42

具体的にどういう結果を得たいのでしょう? "53414E004153"という文字列を得たいのですか? sprintf() でできませんか?
guest

回答2

0

ベストアンサー

あえてC++の機能でおこなうと

c++

1#include <iostream> 2#include <string> 3#include <sstream> 4#include <ios> 5#include <iomanip> 6 7 8int main() 9{ 10 unsigned char senId[] = {0x53, 0x41,0x4E, 0x00, 0x41, 0x53}; 11 std::ostringstream oss; 12 oss << std::setfill('0') << std::uppercase; 13 for(unsigned int it : senId){ 14 oss << std::setw(2) << it; 15 } 16 std::string str = oss.str(); 17 std::cout << str << std::endl; 18}

ただし非常に煩雑ですので、C言語のsnprintfを用いて

c++

1#include <iostream> 2#include <string> 3#include <cstdio> 4 5int main(){ 6 unsigned char senId[] = {0x53, 0x41,0x4E, 0x00, 0x41, 0x53}; 7 std::string str(13, '\0'); 8 std::snprintf(&str[0], str.size(), 9 "%02d%02d%02d%02d%02d%02d", senId[0], senId[1], 10 senId[2], senId[3], 11 senId[4], senId[5]); 12 std::cout << str << std::endl; 13}

のが楽かもしれません。

投稿2018/07/02 02:45

編集2018/07/02 10:31
asm

総合スコア15147

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

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

cateye

2018/07/02 09:38 編集

当たりですねw  0x53=83 0x41=63 0x4E=78・・・・なんで、1バイト毎に10進数に変換して文字列にしたいと言わないのか??
asm

2018/07/02 10:35 編集

// 後出しで修正しましたけどね ただまぁ、それ(一般的な用語による問題の説明)が出来ていれば解決できますね
guest

0

まずはその配列をint型、あるいはlong型の変数に格納しといて文字列変換すれば。

投稿2018/07/02 01:53

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問