文字列を数値変換する

特定の文字列を数値変換する方法について。特定のIDが割り振られたポリラインを色別で視覚化する必要があったので調べました。

アスキーコードを使って変換する

文字のASCIIコードの値を合計する。

string input = "ace57b5e"; // 対象の文字列
int sum = 0;            // 合計値を初期化

// 各文字をループ処理
for (int i = 0; i < len(input); i++) {
    int ascii = ord(input[i]); // 文字のASCIIコードを取得
    sum += ascii;              // 合計に加算
}

// 結果を表示(または返す)
printf('codes: ' + sprintf('%g', sum) + '\n');
// Sum of ASCII codes: 657

0-1に収める場合

最小値と最大値からスケールする。

string input = "ace57b5e"; // 対象の文字列
int sum = 0;
int min_ascii = 32;      // 最小ASCIIコード(例: スペース)
int max_ascii = 255;     // 最大ASCIIコード

// 各文字のASCIIコードを合計
for (int i = 0; i < len(input); i++) {
    sum += ord(input[i]);
}

// スケール範囲の計算
int length = len(input);
int min_possible = min_ascii * length;
int max_possible = max_ascii * length;

// 正規化
float scaled_value = float(sum - min_possible) / float(max_possible - min_possible);

// 結果を確認または保存
f@scaled_ascii = scaled_value;
printf('Scaled Value: ' + sprintf('%g', scaled_value) + '\n');
// Scaled Value: 0.224776

この値を明度や彩度に変換するなら
デバッグのための視覚化表現

タイトルとURLをコピーしました