「基数変換10 16」の版間の差分
ナビゲーションに移動
検索に移動
全角から半角に修正 |
SyntaxHighlightにcopyの追加 |
||
| (同じ利用者による、間の7版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
10進数を16進数に、16進数を10進数に変換します。 | 10進数を16進数に、16進数を10進数に変換します。 | ||
== 機能 == | == 機能 == | ||
| 10行目: | 8行目: | ||
* 選択状態を保持します。 | * 選択状態を保持します。 | ||
== | == 注意事項 == | ||
* 選択範囲に数値以外の文字列が含まれていた場合、何もしません。 | * 選択範囲に数値以外の文字列が含まれていた場合、何もしません。 | ||
* "0x"または"0X"が付加された数値を16進数として解釈します。 | * "0x"または"0X"が付加された数値を16進数として解釈します。 | ||
| 17行目: | 15行目: | ||
* 16進数への変換の場合、A~Fの数字は大文字に変換されます。小文字が良い場合は「.toUpperCase()」を削除してください。 | * 16進数への変換の場合、A~Fの数字は大文字に変換されます。小文字が良い場合は「.toUpperCase()」を削除してください。 | ||
== | == 変更履歴 == | ||
* 2020 | * 1.0.2 (2020-12-27) | ||
* 2019 | ** マルチカーソル | ||
* 2019 | * 1.0.1 (2019-04-12) | ||
** Quitを無くす修正 | |||
* 1.0.0 (2019-02-10) | |||
** 初版 | |||
== ソースコード == | |||
<syntaxhighlight lang="javascript" copy> | |||
#title = "基数変換10_16" | |||
if(document.selection.Mode === meModeMulti){ | |||
doMultiActionMini(radix); // 複数範囲 | |||
}else{ | |||
radix(); | |||
} | |||
function radix(){ // 基数変換 | |||
var s = document.selection; | |||
var key = s.Text.slice(0,2).toLowerCase(); | |||
var str = ""; | |||
if(s.IsEmpty) return; // 選択範囲がなければ中止 | |||
if(isNaN(s.Text)) return; // 変な文字が混ざってても中止("0x"はOK) | |||
if(key == "0x"){ | |||
// 16進数ならば10進数(文字列)に変換 | |||
str = String(parseInt(s.Text, 16)); | |||
}else{ | |||
// 10進数ならば16進数に変換し、頭に"0x"を付加する | |||
str = "0x" + Number(s.Text).toString(16).toUpperCase(); | |||
} | |||
s.Text = str; | |||
s.SetAnchorPos(s.GetActivePos()-str.length); | |||
} | |||
function doMultiActionMini(fn){ // 簡易版 | |||
var Doc = Document, ds = Doc.Selection; | |||
ds.Mode = meModeMulti; | |||
if(ds.Mode == null){fn(); return;} //◆Mery 2 以前 | |||
var len = Doc.TextLength; | |||
var sels = []; | |||
for(var i=0, n=ds.Count||1; i<n; i++){ | |||
// 選択範囲をマイナスオフセットで記憶 | |||
sels.push({anc:ds.GetAnchorPos(i)-len, act:ds.GetActivePos(i)-len}); | |||
} | |||
BeginUndoGroup(); | |||
AddUndo(); | |||
for(var i=0; sels[i]; i++){ | |||
ds.SetActivePos(sels[i].act+len); | |||
ds.SetAnchorPos(sels[i].anc+len); // シングル選択 | |||
fn(); // 本処理 | |||
// 選択範囲を更新(マイナスオフセット解除) | |||
sels[i] = {anc:ds.GetAnchorPos(), act:ds.GetActivePos()}; | |||
len = Doc.TextLength; | |||
} | |||
EndUndoGroup(); | |||
for(var i=0; sels[i]; i++){ | |||
ds.AddPos(sels[i].anc, sels[i].act); // 選択範囲を復元 | |||
} | |||
} | |||
</syntaxhighlight> | |||
2025年6月30日 (月) 00:31時点における最新版
概要[編集]
10進数を16進数に、16進数を10進数に変換します。
機能[編集]
- 選択範囲がない場合何もしません。
- 1つの数値を選択しマクロを実行すると10進数なら16進数に、16進数なら10進数に変換します。
- 16進数への変換の場合、数値の頭に"0x"を付加します。
- 選択状態を保持します。
注意事項[編集]
- 選択範囲に数値以外の文字列が含まれていた場合、何もしません。
- "0x"または"0X"が付加された数値を16進数として解釈します。
- 0FF'Hのような表記方法は考慮していません。
- 広範囲に渡る複数の数値の変換には対応していません。
- 16進数への変換の場合、A~Fの数字は大文字に変換されます。小文字が良い場合は「.toUpperCase()」を削除してください。
変更履歴[編集]
- 1.0.2 (2020-12-27)
- マルチカーソル
- 1.0.1 (2019-04-12)
- Quitを無くす修正
- 1.0.0 (2019-02-10)
- 初版
ソースコード[編集]
#title = "基数変換10_16"
if(document.selection.Mode === meModeMulti){
doMultiActionMini(radix); // 複数範囲
}else{
radix();
}
function radix(){ // 基数変換
var s = document.selection;
var key = s.Text.slice(0,2).toLowerCase();
var str = "";
if(s.IsEmpty) return; // 選択範囲がなければ中止
if(isNaN(s.Text)) return; // 変な文字が混ざってても中止("0x"はOK)
if(key == "0x"){
// 16進数ならば10進数(文字列)に変換
str = String(parseInt(s.Text, 16));
}else{
// 10進数ならば16進数に変換し、頭に"0x"を付加する
str = "0x" + Number(s.Text).toString(16).toUpperCase();
}
s.Text = str;
s.SetAnchorPos(s.GetActivePos()-str.length);
}
function doMultiActionMini(fn){ // 簡易版
var Doc = Document, ds = Doc.Selection;
ds.Mode = meModeMulti;
if(ds.Mode == null){fn(); return;} //◆Mery 2 以前
var len = Doc.TextLength;
var sels = [];
for(var i=0, n=ds.Count||1; i<n; i++){
// 選択範囲をマイナスオフセットで記憶
sels.push({anc:ds.GetAnchorPos(i)-len, act:ds.GetActivePos(i)-len});
}
BeginUndoGroup();
AddUndo();
for(var i=0; sels[i]; i++){
ds.SetActivePos(sels[i].act+len);
ds.SetAnchorPos(sels[i].anc+len); // シングル選択
fn(); // 本処理
// 選択範囲を更新(マイナスオフセット解除)
sels[i] = {anc:ds.GetAnchorPos(), act:ds.GetActivePos()};
len = Doc.TextLength;
}
EndUndoGroup();
for(var i=0; sels[i]; i++){
ds.AddPos(sels[i].anc, sels[i].act); // 選択範囲を復元
}
}
スポンサーリンク