Erlang 프로 그래 밍 학습 노트 (4) 2 진법 과 비트 문법

2889 단어
Erlang 프로 그래 밍 학습 노트 (4) 2 진법 과 비트 문법
이 진 형
바 이 너 리 형 (binary) 은 데이터 구조 로 공간 을 절약 하 는 방식 으로 대량의 원시 데 이 터 를 저장 하 는 것 으로 설계 되 었 다.Erlang 가상 기 는 바 이 너 리 형의 입 출력 과 메시지 전달 을 최적화 시 켜 매우 효율 적 이다.
대량의 무구 조 데이터 내용 을 저장 하려 면 대형 문자열 이나 파일 의 내용 등 바 이 너 리 가 우선 이 어야 합 니 다.대부분의 경우 이 진 형의 자릿수 는 8 의 정수 배 이기 때문에 하나의 바이트 문자열 에 대응 합 니 다.만약 자릿수 가 8 의 정수 배가 아니라면, 이 데 이 터 를
비트 문자열 (bitstring).그래서 우리 가 비트 문자열 을 말 할 때 데이터 의 자릿수 가 8 의 정수 배가 아니 라 는 것 을 강조 한다.
바 이 너 리 형식의 작성 과 인쇄 형식 은 두 개의 작은 번호 와 두 개의 큰 번호 사이 의 정수 나 문자열 입 니 다.
1> <<1,2,3>>.
<<1,2,3>>
2> <<67,68,69>>.
<<"CDE">>
3> <<"hello">>.
<<"hello">>

동작 바 이 너 리
list_to_binary(L)
list_to_binary 는 io 목록 (iolist) L 의 모든 요 소 를 눌 러 서 만 든 바 이 너 리 형 을 되 돌려 줍 니 다.io 목록 자 체 는 순환 정의 입 니 다. 목록 에 포 함 된 요 소 는 0. 255 의 정수, 바 이 너 리 또는 다른 io 목록 을 말 합 니 다.
1> Bin1 = <<1,2,3>>.
<<1,2,3>>
2> Bin2 = <<4,5>>.  
<<4,5>>
3> Bin3 = <<6>>.  
<<6>>
4> list_to_binary([Bin1,2,Bin2,2,3,Bin3,4,5]).
<<1,2,3,2,4,5,2,3,6,4,5>>

split_binary(Bin,Pos)
split_binary 함 수 는 Pos 에서 바 이 너 리 Bin 을 둘 로 나 눕 니 다.
1> Bin = <<1,2,3,4,5,6,7,8>>.
<<1,2,3,4,5,6,7,8>>
2> split_binary(Bin,3).
{<<1,2,3>>,<<4,5,6,7,8>>}

term_to_binary(Term)
term_to_binary 함 수 는 모든 Erlang 데이터 형식 을 바 이 너 리 로 변환 할 수 있 습 니 다.
binary_to_term(Bin)
binary_to_term 함 수 는 termto_binary 의 역함수, 이 진 을 Erlang 데이터 형식 으로 변환 할 수 있 습 니 다.
byte_size(Bin)
이 함 수 는 바 이 너 리 의 바이트 수 를 되 돌려 줍 니 다.
1> Bin = term_to_binary({hello,"binary"}).
<<131,104,2,100,0,5,104,101,108,108,111,107,0,6,98,105,
  110,97,114,121>>
2> binary_to_term(Bin).
{hello,"binary"}
3> byte_size(Bin).
20

비트 문법
비트 문법 은 바 이 너 리 데이터 에서 단독 비트 나 비트 문자열 을 추출 하거나 추가 하 는 표현법 이다.바 텀 코드 를 작성 하면 비트 단위 로 바 이 너 리 데 이 터 를 포장 하고 풀 때 비트 문법 이 매우 유용 하 다 는 것 을 알 수 있 습 니 다.개발 비트 문법 은 프로 토 콜 프로 그래 밍 (Erlang 의 강점) 과 바 이 너 리 데 이 터 를 조작 하 는 효율 적 인 코드 를 만 들 기 위 한 것 이다.
1> Red = 2.
2
2> Green = 61.
61
3> Bule = 20.
20
4> Mem = <<Red:5,Green:6,Bule:2>>.
<<23,20:5>>
5> M = <<Red:5,Green:5,Bule:6>>.
<<23,84>>

8> M = <>.  
이 코드 는 바 이 너 리 를 만 들 고 M 에 저장 합 니 다. 데이터 의 총 길 이 는 16 의 배수 이기 때문에 M 의 유형 은 binary 입 니 다.
7> Mem = <>.
이 코드 는 바 이 너 리 를 만 들 고 Mem 에 저장 합 니 다. 데이터 의 총 길 이 는 16 의 배수 가 아니 기 때문에 Mem 은 비트 문자열 이 고 유형 은 bitstring 입 니 다.

좋은 웹페이지 즐겨찾기