C#で使える書式指定についての簡単なまとめ

C言語のprintf関数で使えるような書式をC#でも使いたいと思って簡単に調べてみました。

int

サンプル

int value = 1234;

// 普通に表示
Console.WriteLine($"{value}");

// 8文字分のスペースに右揃えで表示
Console.WriteLine($"{value,8}");

// 8文字分のスペースに左揃えで表示
Console.WriteLine($"{value,-8}");

// 足りない部分は0で補って8桁で表示
Console.WriteLine($"{value:D8}");

実行結果

1234
    1234
1234    
00001234

サンプル – 16進表記

int value = 1234;

// 16進表記で表示
Console.WriteLine($"{value:X}");

// 8文字分のスペースに右揃えで表示
Console.WriteLine($"{value,8:X}");

// 8文字分のスペースに左揃えで表示
Console.WriteLine($"{value,-8:X}");

// 足りない部分は0で補って8桁の16進表記で表示
Console.WriteLine($"{value:X8}");

実行結果

4D2
     4D2
4D2     
000004D2

サンプル – 16進表記 その2

小文字の16進表記で表示したい場合はXの代わりにxを使います。

int value = 1234;
Console.WriteLine($"{value:x}");
Console.WriteLine($"{value,8:x}");
Console.WriteLine($"{value,-8:x}");
Console.WriteLine($"{value:x8}");

実行結果

4d2
     4d2
4D2     
000004d2

float

サンプル

float value = 123.4f;

// 普通に小数点表示
Console.WriteLine($"{value:F}");

// 8文字分のスペースに右揃えで小数点表示
Console.WriteLine($"{value,8:F}");

// 8文字分のスペースに左揃えで小数点表示
Console.WriteLine($"{value,-8:F}");

// 小数点以下を8桁で表示
Console.WriteLine($"{value:F8}");

実行結果

123.40
  123.40
123.40  
123.40000000

※精度指定子がない場合はNumberFormatInfo.NumberDecimalDigitsの値によって小数点以下の桁数が決まるそうです。

リンク

$ – string interpolation – C# reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

String interpolation in C# | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/string-interpolation

Standard numeric format strings | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

Unityで貼り付けたボタンをスクリプトからクリックする方法

Unityで貼り付けたボタンをスクリプトからクリックしたい場合はExecuteEvents.Executeを使って次のような感じで実装できるみたいです。

使い方

import UnityEngine.UI;
import UnityEngine.EventSystems;

public Button button; // クリックしたいボタン
void Example()
{
  // ボタンをクリック
  ExecuteEvents.Execute(
    button.gameObject,
    new PointerEventData(EventSystem.current),
    ExecuteEvents.pointerClickHandler);
}

ちなみに、ボタンにフォーカス(Enterキーでクリックできる状態)したい場合は
SetSelectedGameObjectが使えます。(過去記事

リンク

Unity – Scripting API: EventSystems.ExecuteEvents.Execute
https://docs.unity3d.com/2018.3/Documentation/ScriptReference/EventSystems.ExecuteEvents.Execute.html

MariaDBでメモリ不足の対処方法

格安VPSなどメモリが少ない環境でデータベース(WordPressなど)を使うとメモリ不足のエラーが発生することがあります。

対処方法としては上位プランに移行してメモリ量を増やすしかないのですが、MariaDBを使っている場合は一時的な対策としてperformance_schemaoffに設定することで改善する場合があるようです。

設定方法

/etc/my.cnf.d/server.cnfを適当なエディタで編集して[mysqld]の直後に下記の内容を追加

[mysqld]
performance_schema = off

httpdを再起動

# systemctl restart httpd

リンク

Starting MySQL On Low Memory Virtual Machines | MariaDB
https://mariadb.com/resources/blog/starting-mysql-on-low-memory-virtual-machines/

MariaDB Running Out of Memory? Here Is What You Can Do About It – Cloud Insidr
https://www.cloudinsidr.com/content/mariadb-running-out-of-memory-and-what-you-can-do-about-it/