Character

From MakerLab Wiki
Jump to navigation Jump to search
Kích thước Số nguyên có dấu Số nguyên không dấu
1 byte char unsigned char
1 byte ... byte
2 byte short word
2 byte int unsigned int
4 byte long unsigned long

Char

Chức năng

_ Là một kiểu dữ liệu được sử dụng để lưu trữ giá trị của 1 ký tự.

_ Chữ ký tự được viết trong dấu ngoặc đơn (' '), ví dụ như 'A'. Đối với nhiều ký tự - chuỗi, sử dụng dấu ngoặc kép (" "), ví dụ như "ABC".

_ Tuy nhiên, các ký tự được lưu trữ dưới dạng số. Bạn có thể xem mã hóa cụ thể trong Bảng mã ASCII ở dưới.

_ Điều này nghĩa là có thể thực hiện phép tính trên các ký tự. Ví dụ, cho thực hiện phép tính 'A' + 1 kết quả sẽ là 'B' hoặc 66, vì giá trị DEC trong ASCII của kí tự 'A'65.

_ Mỗi biến char chiếm 1 byte bộ nhớ, có thể thể hiện 256 (28) giá trị khác nhau.

_ Một char lưu trữ một số nguyên từ -128 (-27) đến 127 (27-1).

Cú pháp

  • char var = val;

Tham số

  • var - tên biến.
  • val - giá trị để "gán" cho biến đó.

Code mẫu

Mã này cho biết cách sử dụng kiểu dữ liệu char.

char var;

/* ----------------------------------------------------- */

void setup()
{
  Serial.begin(115200); // Mở cổng Serial

  Serial.print("Kích thước dữ liệu CHAR: ");
  Serial.print(sizeof(var));
  Serial.println(" byte.");

  Serial.println("--- --- --- --- ---");

  var = 127;
  Serial.print("Gán CHAR giá trị 127: ");
  Serial.println(var, DEC); // Xem ở dạng số

  var++;
  Serial.print("Tăng CHAR lên 1 đơn vị: ");
  Serial.println(var, DEC); // Xem ở dạng số

  Serial.println("--- --- --- --- ---");

  var = -128;
  Serial.print("Gán CHAR giá trị -128: ");
  Serial.println(var, DEC); // Xem ở dạng số

  var--;
  Serial.print("Giảm CHAR xuống 1 đơn vị: ");
  Serial.println(var, DEC); // Xem ở dạng số

  Serial.println("--- --- --- --- ---");

  Serial.println("In toàn bộ kí tự trong bảng mã ASCII:");

  for (int i = -128; i <= 127; i++)
  {
    var = i;
    Serial.print("DEC: ");
    Serial.print(i);
    Serial.print(" - Char: ");
    Serial.println(var);
  }
}

/* ----------------------------------------------------- */

void loop()
{
  // Không làm gì cả!
}

Unsigned Char

Chức năng

_ Bạn chỉ nên sử dụng char để lưu trữ các "ký tự".

_ Đối với loại dữ liệu 1 byte cho số nguyên không dấu, hãy sử dụng loại dữ liệu unsigned char hoặc byte.

_ Tuy nhiên, để thống nhất phong cách lập trình Arduino, kiểu dữ liệu byte nên được ưu tiên.

Cú pháp

  • unsigned char var = val;

Tham số

  • var - tên biến.
  • val - giá trị để "gán" cho biến đó.

Code mẫu

Mã này cho biết cách sử dụng kiểu dữ liệu unsigned char.

unsigned char var;

/* ----------------------------------------------------- */

void setup()
{
  Serial.begin(115200); // Mở cổng Serial

  Serial.print("Kích thước dữ liệu UNSIGNED CHAR: ");
  Serial.print(sizeof(var));
  Serial.println(" byte.");

  Serial.println("--- --- --- --- ---");

  var = 255;
  Serial.print("Gán UNSIGNED CHAR giá trị 255: ");
  Serial.println(var);

  var++;
  Serial.print("Tăng UNSIGNED CHAR lên 1 đơn vị: ");
  Serial.println(var);

  Serial.println("--- --- --- --- ---");

  var = 0;
  Serial.print("Gán UNSIGNED CHAR giá trị 0: ");
  Serial.println(var);

  var--;
  Serial.print("Giảm UNSIGNED CHAR xuống 1 đơn vị: ");
  Serial.println(var);
}

/* ----------------------------------------------------- */

void loop()
{
  // Không làm gì cả!
}

Bảng mã ASCII

Giá trị (decimal) Ký tự Giá trị (decimal) Ký tự Giá trị (decimal) Ký tự
32 khoảng trắng 64 @ 96 `
33 ! 65 A 97 a
34 " 66 B 98 b
35 # 67 C 99 c
36 $ 68 D 100 d
37 % 69 E 101 e
38 & 70 F 102 f
39 ' 71 G 103 g
40 ( 72 H 104 h
41 ) 73 I 105 i
42 * 74 J 106 j
43 + 75 K 107 k
44 , 76 L 108 l
45 - 77 M 109 m
46 . 78 N 110 n
47 / 79 O 111 o
48 0 80 P 112 p
49 1 81 Q 113 q
50 2 82 R 114 r
51 3 83 S 115 s
52 4 84 T 116 t
53 5 85 U 117 u
54 6 86 V 118 v
55 7 87 W 119 w
56 8 88 X 120 x
57 9 89 Y 121 y
58 : 90 Z 122 z
59 ; 91 [ 123 {
60 < 92 \ 124 |
61 = 93 ] 125 }
62 > 94 ^ 126 ~
63 ? 95 _