String을 BCD로 변환하거나 BCD를 String으로 변환하기(이진화 십진법)

2021. 2. 18. 21:34·Language/C#

BCD(Binary-coded decimal)는 2진화 10진법으로

보통이면 ASCII 라고 하면 숫자를 하나 표현하는대 한 바이트를 사용합니다.

하지만 BCD를 사용하면 숫자 두개를 표현하는대 한 바이트를 사용할 수 있게 됩니다.

 

날짜를 표현하게 된다면 20010101231110 이라면 ASCII는 14바이트지만 BCD는 절반인 7바이트를 이용합니다.

 

바이트 하나하나를 절약하여 회선 비용을 절감하고싶거나, Serial 통신등 노이즈에 약한 통신방법을 이용하는 IoT나 소형 제품에 적용되는 데이터 형식이라고 생각합니다.

 

BCD -> String

1
2
3
4
5
6
7
8
9
public static string BCDtoString(byte[] bcd) {
    StringBuilder temp = new StringBuilder(bcd.Length * 2);
    for (int i = 0; i < bcd.Length; i++) {
        temp.Append((byte)((bcd[i] & 0xf0) >> 4));
        temp.Append((byte)(bcd[i] & 0x0f));
    }
 
    return temp.ToString();
}
Colored by Color Scripter
cs

 

String -> BCD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static byte[] stringToBCD(string bcdString) {
    int length = bcdString.Length;
 
    if (length % 2 != 0) {
        length += 1;
        bcdString = "0" + bcdString;
    }
 
    byte[] bcd_Date = new byte[length / 2];
 
    int indexArray = 0;
    int bytearray = 0;
    for (int i = 0; i < bcdString.Length; i += 2) {
        bcd_Date[bytearray] = Convert.ToByte(bcdString[indexArray].ToString(), 16); indexArray++;
        bcd_Date[bytearray] <<= 4;
        bcd_Date[bytearray] |= Convert.ToByte(bcdString[indexArray].ToString(), 16); indexArray++;
        bytearray++;
    }
    return bcd_Date;
}
Colored by Color Scripter
cs

String to BCD, BCD to String

반응형
저작자표시 비영리 (새창열림)
'Language/C#' 카테고리의 다른 글
  • String 으로된 Byte Array를 Byte[] 로 리턴받기
  • [정보] 신선한 충격을 받았다. (알고리즘/코드 최적화)
  • CRC-16/ARC,AUC-CCITT,MODBUS 계산 소스코드
  • 모니터의 밝기를 System.Management 로 관리하기
Kua
Kua
정보 공유, 개인 정리 공간 입니다.
  • Kua
    Kua's Miscellaneous
    Kua
    • 분류 전체보기 (185)
      • 대문 (2)
      • Tips (25)
        • Chrome (2)
        • Windows (4)
        • IDE (3)
        • 기타 (16)
      • CodingTest (44)
      • Language (20)
        • PHP (5)
        • C# (7)
        • Java (1)
        • Kotlin (7)
      • Framework & Runtime (16)
        • SpringBoot (12)
        • Node.js (2)
        • Vue.js (1)
        • Gradle (1)
      • DevOps (13)
        • Linux (1)
        • Docker (4)
        • Kubernetes (2)
        • Apache Kafka (1)
        • AWS (1)
      • 일상다반사 (53)
        • 도서 (1)
        • 개발 (8)
        • 후기 - IT (7)
        • 후기 - 일상 (13)
        • 차가리 (4)
        • 방송통신대학교 (4)
        • 음식 (2)
      • Games (12)
        • Minecraft (7)
        • VR (2)
        • 그외 (3)
  • 최근 글

  • 인기 글

  • 태그

    후기
    알고리즘
    java
    error
    minecraft
    bronze2
    코딩테스트
    codingtest
    Spring Boot
    Kotlin
    Silver5
    bronze1
    Windows
    github
    Plugin
    백준
    Algorithm
    spring
    c#
    갤럭시
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.0
Kua
String을 BCD로 변환하거나 BCD를 String으로 변환하기(이진화 십진법)
상단으로

티스토리툴바