nislandのブログ

いろんなジャンルについて書くつもりです

Visual Studio 2019で「Visual Studio デバッグコンソール」への出力の文字化けを直す

コードページ変更方法

この記事は Visual Studio 2019 について書いています。

概要

Visual Studio 2019の「ローカルwindowsデバッガー」ターミナルのコードページの変更の仕方についてです。

私の場合デフォルトでは932(=Shift-JIS)になっていました。 これを65001(=utf8)に変えたいです。


  • 「ローカルWindowsデバッガー」について

実行時に「Visual Studio デバッグコンソール」という名前のウィンドウで出てくるターミナルです。

Visual Studio 2019で新しいプロジェクトを作成するときにテンプレートで「コンソールアプリ」(C++)を選択すると、 デフォルトで出力ターミナルが「ローカルwindowsデバッガー」になると思います。

続きを読む

Easing functionのコード

イージング

調べるといろいろ出るけど、コードだけ見たいならこのサイトが特に無駄な情報がなく実装も簡潔なのでおすすめ。

http://robertpenner.com/easing/

サイト自体は英語ですがCodeと書かれたリンクからGithubに飛べてイージング関数のコードが見れます。

最近注目を浴びてる動画編集業界やWeb業界でたびたびイージングは使われてるらしく、その分日本語記事が多くなっていますね。
がちがちにSEO対策しているサイトよりもこういうサイトの方が見やすくて個人的に好きです。

イージング関数については以下のサイトを見るとわかりやすいです。

https://cocopon.me/blog/2014/12/easing-pde/

PowerShell 7のコードページと$OutputEncodingと[Console]::OutputEncodingについて

背景

PowerShellをバージョン5から7にアップデートして、文字化け問題に悩まされました。

で、文字化けはとりあえず解消できたからいいものの、結局何が原因だったのかはいまいちよくわからない。
とりあえず検証したことをメモとして残しておこうって感じの記事です。

解決法

とりあえず先に解決法を。以下のコマンドで解決しました。

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')

これをすれば文字化けが治るはずです。chcp 65001は必要なし。

続きを読む

16進数表記と負数

std::hex

変なことを考えてやたら時間を食ってしまった......
事態はchar型を桁あふれさせたことでした。

char c = 0x89;
std::cout << (int)c << '\n' // -119

0x89は10進数だと137。
char型は最大127までなので、-119が出力されるのはまあよし。
次にこれをstd::hexで16進表記しようとすると、

char c = 0x89;
std::cout << std::hex << (int)c << '\n' // 0xffffff89

んん?
負数表現のためにfがたくさんつくのは良いとして......
0x89をchar型に入れてstd::hexで出力したら0xffffff89になる」ことにめちゃくちゃ違和感を覚えました。
2の補数で負数を表現しているはずだけど、それだと89が出力されるのがおかしいような......

0x89は2進数だと0000 0000 0000 0000 0000 0000 1000 1001
これの2の補数は1111 1111 1111 1111 1111 1111 0111 0111で、これが16進数だと0xffffff77
0xffffff89じゃなくて正しくは0xffffff77なんじゃないの?」と思ってしまいました。

当然この考察は間違いだったわけです。
そもそもchar型に代入してる時点で0x89は137ではなく-119として扱われています。
言うまでもなく137と-119は別物。
-119は補数表現的に考えると「119を足して0になる値」なので、 0000 0000 0000 0000 0000 0000 0111 0111(119)の2の補数1111 1111 1111 1111 1111 1111 1000 1001(-119)が出力されるものとして正しかったです。
16進数に直すと0xffffff89ですね。一件落着。
こんなのにやたらと考え込んでしまった...

ブログをはじめました

最近はやっているはてなブログというのをはじめてみました。

デザインがわかりやすくていいですね。

特に誰かと競い合って研鑽するつもりはなく、ゆっくりといろいろなことを書き残していけたらなと思っています。