こんにちは。
基本的には不可能です。配列の要素数は原則としてコンパイル時定数である必要がありますが、std::stringのsize()関数はコンパイル時定数になりませんので。
なお、gccでは使えるVLAを使って無理やり対応することが可能ではあります。
C++
1#include <iostream>
2#include <iomanip>
3#include <string>
4
5int main()
6{
7 std::string s = "81808000";
8 unsigned long long int s_num = std::stoull(s, nullptr, 16);
9 char s_result[s.size()/2];
10 for (int i=s.size()/2-1; 0 <= i; --i)
11 {
12 s_result[i] = s_num % 256;
13 s_num /= 256;
14 }
15 for (char x : s_result)
16 {
17 std::cout << "0x" << std::hex << std::setw(2) << std::setfill('0') << (x&0xff) << " ";
18 }
19 std::cout << "\n";
20}
wandbox
しかし、可変長サイズの生配列を関数から戻すことは恐らく不可能ですので、関数化はできないと思います。
生配列にこだわらないで、std::vector等を使った方がスマートですよ。
また、char型で数値を扱うのは面倒です。int型やunsigned型の方が楽できますよ。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/24 11:50