처음으로 바이너리가 나를 진짜로 물었을 때,그것은 컴퓨터 과학 수업이 아니 었습니다 - 그것은 생산 버그에있었습니다. 내가 유지하는 WordPress 플러그인은 영어가 아닌 문자를 망가 뜨리는 방식으로 짧은 문자열을 저장하고 있었고,부패가 발생한 곳을 알아 내기 위해 실제 바이트를 봐야했습니다. 나는 깨진 문자열을 & quot;text to binary" 온라인으로 찾은 상자를 1 과 0 의 벽을 되찾았고 도구가 ASCII 문자 만 처리하고 악센트가있는 것을 조용히 떨어 뜨 렸다는 것을 즉시 깨달았습니다. 그것이 보여준 바이트는 거짓말이었고,스택의 잘못된 레이어를 쫓는 오후를 낭비했습니다.
그것은 바이너리 변환에 관한 것입니다: 그것은 장난감처럼 보이고, 대부분의 무료 도구는 장난감처럼 취급합니다. 적절한 번역기는 사람들이 실제로 입력하는 모든 범위의 문자 - 악센트, 이모티콘, 중국어, 아랍어 - 를 UTF-8 을 통해 인코딩해야하며, 최신 웹의 인코딩은 실행되며, 바이트 단위로 다시 디코딩해야합니다. 나는 구축한다 Toolz.devWP Adminify 플러그인과 상당한 양의 Laravel 및 React를 사용하여 원하는 것보다 텍스트와 바이트 표현 사이를 더 많이 이동하고 구축했습니다 이진 변환기 쉬운 128뿐만 아니라 모든 캐릭터에 대해 올바르게 변환을 수행합니다.
TL;DR: 이진 번역기는 텍스트를 컴퓨터가 저장하는 1 과 0 으로 바꾸고,그 1 과 0 을 다시 텍스트로 바꿉니다. 캐치는 문자 인코딩입니다: ASCII 는 128 문자 만 다루는 반면 실제 텍스트는 1 개 문자가 1 ~ 4 바이트가 될 수있는 UTF-8 이 필요합니다. 그만큼 이진 변환기 전체를 인코딩하고 디코딩합니다 유니코드 이모티콘을 포함한 범위는 브라우저에서 완전히 이진수, 16진수, 10진수 및 8진수로 표시되며 붙여넣기가 디코딩에 실패할 때 어떤 토큰이 잘못된지 정확히 알려줍니다.
바이너리 번역기란 무엇입니까?
이진 번역기는 사람이 읽을 수 있는 텍스트와 컴퓨터가 해당 텍스트를 저장하는 데 사용하는 숫자 표현 사이의 변환기입니다. 입력하는 모든 문자는 하나 이상의 바이트 - 0 에서 255 까지의 숫자 - 로 저장되며 각 바이트는 이진 (2 진수), 16 진수 (16 진수), 10 진수 (10 진수) 또는 8 진수 (8 진수) 로 작성할 수 있습니다. 번역 "Hi" 이진수로 제공합니다 01001000 01101001; 8비트로 구성된 두 그룹은 "H" 및 "i"에 대한 2바이트입니다.
단어 "translate"는 여기에 실제 작업을 하고 있습니다. 관련된 번역 테이블이 있기 때문입니다. 72 의 바이트 값은 본질적으로 문자 "H"를 의미하지는 않습니다. - "H"를 의미합니다. 문자 인코딩이 그렇게 말하기 때문에. 기본 영어 문자,숫자 및 일반적인 구두점의 경우 해당 매핑은 128 문자를 0 부터 127 까지의 값에 할당하는 1960 년대의 표준인 ASCII 입니다. ASCII 는 "H"가 72 이고 공백이 32 이며 모든 사람이 올바르게 얻는 이진 변환의 일부입니다.
문제는 값 127 위에서 시작합니다. 세계는 128 개 이상의 별개의 문자를 훨씬 더 많이 입력하고,나머지를 처리하는 인코딩 - 브라우저,데이터베이스 및 JSON 이 거의 확실하게 사용하는 - 은 UTF-8 입니다. 좋은 바이너리 번역기는 실제로 기본 변환 레이어가 맨 위에있는 UTF-8 코덱입니다. 그만큼 이진 변환기 정확히 그런 방식으로 제작되었으므로 이모티콘이 포함된 문자열을 왕복하고 동일한 문자를 돌려줄 수 있습니다.
텍스트를 바이너리로 변환하는 것은 실제로 어떻게 작동합니까?
텍스트를 바이너리로 바꾸는 것은 2 단계 파이프라인이며,단계를 이해하는 것은 도구가 하는 모든 것을 설명합니다. 첫 번째 단계는 문자를 바이트로 인코딩합니다이고, 두번째는 선택한 베이스에 각 바이트를 작성합니다.
인코딩은 UTF-8 이 살고있는 곳입니다. UTF-8 은 가변 길이 인코딩입니다: 문자는 일반 ASCII 문자 인 경우 1 바이트,대부분의 라틴어 악센트 문자와 많은 기호에 대해 2 바이트,중국어, 일본어 및 한국어를 포함한 world's 스크립트의 대부분에 대해 3 바이트,덜 일반적인 문자와 이모티콘에 대해 4 바이트를 사용합니다. 그래서 "A"는 1 바이트,"é"는 2,"中"는 3 이고,얼굴 이모티콘은 4 입니다. 인코더는 문자열을 통해 걸으며 기본 범위 밖의 문자에 대해서는 올바른 멀티 바이트 시퀀스를 생성하며,얼마나 많은 바이트를 따르는지를 표시하는 선행 비트로 완성됩니다.
두 번째 단계는 순수 산술입니다. 바이트 값 목록이 있으면 이진수로 작성한다는 것은 0 에서 255 까지의 각 숫자를 8 비트로 표현하는 것을 의미하며,0 패딩 처리되어 모든 바이트가 동일한 너비입니다. 16 진수는 각 바이트를 정확히 두 문자 (00 에서 ff) 로 작성하므로 hex 는 원시 데이터를 볼 때 가장 컴팩트한 선호도입니다. 8 진수는 바이트당 세 자리 숫자를 사용하고 10 진수는 일반 숫자만 표시합니다. The 이진 변환기 기본 바이트가 동일하므로 즉시 4개 베이스 사이를 전환할 수 있습니다. 디스플레이 형식만 변경됩니다.
번역기는 어떻게 이진법을 다시 텍스트로 해독합니까?
디코딩은 파이프라인을 역전시키며,대부분의 도구가 조용히 실패하는 방향입니다. 먼저 도구가 해야 합니다 입력 내용을 바이트 값으로 읽습니다, 그렇다면 그래야 합니다 해당 바이트를 UTF-8로 다시 문자로 디코딩합니다.
입력을 읽는 것은 토큰화를 의미합니다. 바이트 사이에 공백이 있는 바이너리를 붙여 넣으면 각 그룹은 1 바이트입니다. 하나의 긴 연속 비트 실행을 붙여 넣으면 도구는 비트를 8 로 그룹화합니다. 이는 전체 길이가 8 의 배수 인 경우에만 작동하므로 홀수 길이는 자동으로 잘못 읽히지 않고 플래그가 지정됩니다. 동일한 논리가 16 진수: 바이트당 두 문자에 적용되므로 홀수 개의 16 진수 숫자는 오류입니다. 쉼표,공백, 탭 및 줄 바꿈은 모두 구분 기호로 작동하므로 먼저 다시 포맷하지 않고 복사 한 형식을 붙여 넣을 수 있습니다.
두 번째 단계는 바이트에서 문자를 다시 작성하며,이것이 UTF-8's 구조가 중요한 곳입니다. 0-127 범위의 바이트는 독립형 문자입니다. 특정 하이 비트 패턴을 가진 바이트는 2,3 또는 4 바이트 시퀀스의 시작을 알리고,다음 바이트는 자신의 연속 패턴을 갖지 않는 경우 - 바이트가 누락되었거나 시퀀스가 끊어 졌거나 데이터가 처음부터 유효한 UTF-8 이 아니 었으므로 - the 이진 변환기 바이트 시퀀스가 대체 문자나 가비지를 내보내는 것이 아니라 유효한 텍스트가 아니라고 보고합니다. 그 정직함이 포인트입니다: 디코드가 실패하면,도구가 고장 났는지 궁금해하는 모지바케를 응시하는 것이 아니라 데이터가 잘못되었음을 알고 싶습니다.
이진수, 16진수, 10진수 또는 8진수 - 무엇을 사용해야 합니까?
모두 같은 바이트를 나타내므로,누가 읽고 무엇을 익숙하게 사용하는지에 대한 선택이 됩니다. 각 베이스에는 자연스럽게 맞는 틈새 시장이 있습니다.
| 베이스 | 바이트당 자릿수입니다 | 위한 최고의 | "H"의 예 (72) |
|---|---|---|---|
| 이진수 (2) | 8 X 1000 X 1000 X 1000 X 1000 X 1000 X 100 X 80 X 100 X 80 X 80 X 80 X 80 X 80 X 80 X 8 | 학습, 비트 수준 작업, 정확한 구조를 보여줍니다 | 01001000 |
| 16진수(16) | 2 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 2000 X 200 | 원시 데이터 보기, 디버깅, 색상 및 바이트 덤프 | 48 |
| 소수점 (10) | 1~3 | 인간 친화적인 바이트 값, 빠른 참조 | 72 |
| 팔진수 (8) | 3 X 1000 X 1000 X 1000 X 100 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X | 유닉스 파일 권한, 일부 레거시 시스템 | 110 |
바이너리는 가장 명시적이고 가르치는 데 가장 좋습니다. 모든 비트를 볼 수 있기 때문입니다. 그러나 장황합니다. 바이트당 8개의 문자가 빠르게 합산됩니다. 16진수는 실제로 가장 많이 사용할 것입니다: 컴팩트하고 각각 2개의 문자로 바이트에 깔끔하게 매핑되며 16진수 편집기, 메모리 덤프 및 색상 코드가 모두 말하는 형식입니다. 10진수는 문자's 숫자 값을 알고 싶을 때 편리합니다. 8진수는 틈새 홀드오버로 Unix 권한 비트에서 가장 친숙합니다 755를,그리고 그것은 주로 그래서 도구가 완성되어 여기에 있습니다. The 이진 변환기 아무것도 다시 입력하지 않고도 4개 모두를 전환할 수 있으므로 표현을 나란히 비교할 수 있습니다.
UTF-8 이 바이너리 변환에 왜 그렇게 중요합니까?
왜냐하면 "text to binary"는 어떤 인코딩을 통해 변환할지 결정할 때까지 의미가 없으며,현대 웹의 경우 그 대답은 거의 항상 UTF-8 입니다. ASCII 만 처리하는 도구는 작동하는 것처럼 보일 것입니다 - 그것은 행복하게 영어 텍스트를 변환 할 것입니다 - 그리고 나서 실제 데이터가 나타나는 순간 당신을 배신합니다.
악센트가 있는 "é"를 생각해 보세요. UTF-8 에서는 2 바이트, 11000011 10101001, 또는 c3 a9 16 진수에서. 모든 문자를 단일 ASCII 바이트로 처리하는 도구는 전혀 나타낼 수 없습니다; 기껏해야 문자를 떨어 뜨리고 최악의 경우 하나의 잘못된 바이트를 생성합니다. 이제 UTF-8 에서 4 바이트 인 이모티콘을 고려하십시오. 순진한 도구는 이들을 완전히 망글링하기 때문입니다 이진 변환기 는 진짜 UTF-8 코덱, "café" 올바른 5 바이트를 생성하고,그 5 바이트를 다시 붙여 넣으면 "café" 정확히.
이것은 학술적인 것이 아닙니다. 국제화된 콘텐츠나 사용자 생성 데이터,이모티콘이 있는 모든 것을 만지는 사람은 누구나 즉시 멀티바이트 문자를 칠 것입니다. 더 깊은 배경을 원한다면,the Base64 인코딩 가이드 관련 인코딩에 대한 동일한 바이트 수준 사고를 다루고,하나를 이해하면 다른 하나가 클릭됩니다. 짧은 버전: 바이트는 보편적이지만 바이트와 문자 간의 매핑은 선택이며 UTF-8 은 웹이 선택한 선택입니다.
바이너리 번역기가 유지 비용을 얻는 일반적인 사용 사례입니다
컴퓨터가 텍스트를 저장하는 방법을 배우고 가르칩니다
사람들이 이진 번역기를 검색하는 가장 일반적인 이유는 개념을 이해하기 위해서입니다. 이름을 입력하고 바이트가 되는 것을 보는 것은 강의가 할 수 없는 방식으로 추상화를 구체적으로 만듭니다. 도구가 정확한 8 비트 그룹을 보여주고 16 진수와 10 진수로 전환할 수 있기 때문에 인코딩과 숫자 기반이 어떻게 관련되는지에 대한 교육 보조 자료로도 사용됩니다. 학생들은 "A"가 65,라는 것을 알 수 있습니다 01000001, 그리고 41 한꺼번에 헥스로.
인코딩 문제 디버깅
이것이 내가 도달하는 곳입니다. 문자열이 손상되었을 때 - 클래식 "é는 é & quot; mojibake 로 표시됩니다 - 진단하는 가장 빠른 방법은 바이트를 보는 것입니다. 깨진 문자열을 인코딩하면 데이터가 이중 인코딩되었는지,중간 문자가 잘렸는지,잘못된 인코딩을 가정 한 시스템에 의해 망가 졌는지 여부가 드러납니다. 원시 바이트를 보면 모호한 "문자가 잘못되었습니다 & quot; 구체적이고 고정 가능한 진단으로 바뀝니다.
낮은 수준의 형식과 프로토콜로 작업합니다
많은 기술적 작업에는 바이트를 직접 읽는 작업이 포함됩니다: 네트워크 패킷,파일 헤더,바이너리 프로토콜 및 임베디드 시스템은 모두 16 진수와 2 진수로 말합니다. 텍스트의 일부를 바이트 표현으로 빠르게 전환하거나 캡처한 16 진수 문자열을 다시 읽을 수 있는 텍스트로 디코딩할 수 있으면 지속적인 컨텍스트 전환이 절약됩니다. 특히 16 진수 보기는 16 진수 편집기와 디버거가 보여주는 것과 일치합니다.
퍼즐, CTF, 숨겨진 메시지
이진 및 육각은 깃발을 캡처 대회,탈출실, 괴짜 퍼즐의 필수 요소입니다. 1 과 0 의 문자열은 짧은 메시지를 숨기는 일반적인 방법이며,이를 붙여 넣기하고 디코딩 할 수 있다는 것은 - 연속 또는 간격 입력으로,4 개의베이스 중 하나에서 - 이들의 짧은 작업을합니다. 명확한 오류 메시지는 퍼즐 입력에 오타 또는 예기치 않은 구분 기호가있을 때 도움이됩니다.
서버 대신 브라우저에서 변환하는 이유는 무엇입니까?
X-1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 이진 변환기 완전히 클라이언트 측에서 실행됩니다. 인코딩하는 텍스트와 디코딩하는 바이트 문자열은 결코 머신을 떠나지 않으며,도구는 페이지가 로드된 후 연결을 끄고 계속 작동합니다. 처음 나타나는 것보다 더 중요합니다: 사람들이 변환하는 문자열은 종종 토큰,내부 식별자,사용자 데이터의 조각 또는 캡처 된 프로토콜 바이트입니다 - 정확히 무작위 서버에 붙여 넣지 말아야 할 종류의 것입니다. 브라우저 내 처리는 붙여 넣을 서버가 없음을 의미합니다. The 온라인 도구의 데이터 개인 정보 보호 가이드는 이를 주장하는 데 있어 더 완전한 사례를 제시합니다.
바이너리 변환은 또한 관련된 인코딩 작업의 클러스터와 나란히 앉아있다. The Base64 인코더/디코더 이메일 및 데이터 URL 과 같은 텍스트 전용 채널을 통해 바이너리를 이동하는 데 사용되는 인코딩을 처리합니다. The URL 인코더/디코더 쿼리 문자열에 대한 퍼센트 인코딩을 다룹니다. And the 해시 생성기 가역적 표현이 아닌 지문이 필요할 때 텍스트를 고정 길이 다이제스트로 바꿉니다.For the warestly kit I keep open while building, the 웹 개발자 툴킷 검거는 좋은 출발점입니다.
자주 묻는 질문
텍스트를 이진으로 변환하려면 어떻게 해야 합니까?
Binary Translator 를 열고 "Text to Binary"를 선택하고,base 를 Binary 로 설정하고,텍스트를 입력합니다. 각 문자는 UTF-8 바이트 값으로 인코딩되고 8 비트 그룹으로 표시되므로 "A"는 01000001 이 됩니다. 입력할 때 출력이 업데이트되고 한 번의 클릭으로 복사할 수 있으며,아무것도 다시 입력하지 않고 16 진수,10 진수 또는 8 진수로 전환할 수 있습니다.
바이너리를 텍스트로 다시 변환하려면 어떻게 해야 합니까?
"Binary 를 Text"로 선택하고 바이너리를 붙여 넣습니다. 공백,쉼표 또는 줄 바꿈으로 바이트를 분리하거나 전체 길이가 8 의 배수 인 한 하나의 연속 비트 실행을 붙여 넣을 수 있습니다. 도구는 비트를 바이트로 그룹화하고 UTF-8 로 디코딩하여 원래 문자를 다시 작성하며 길이가 잘못되었거나 문자가 유효하지 않은 경우 오류를보고합니다.
이진 변환기는 어떤 문자 인코딩을 사용합니까?
현대 웹과 대부분의 프로그래밍 언어에서 사용되는 인코딩인 UTF-8 을 사용합니다. ASCII 문자는 1 바이트,대부분의 악센트 문자는 2,많은 스크립트와 모든 이모티콘은 3,4 바이트를 사용합니다. 즉,128 개의 ASCII 문자만 매핑하는 간단한 도구와 달리 이 도구는 일반 영어보다 훨씬 더 많은 것을 올바르게 처리합니다.
16 진수, 10 진수, 8 진수로도 변환할 수 있나요?
예. 기본 선택기는 출력을 이진수,16 진수,10 진수,8 진수 사이에서 전환하고 디코딩은 그 기본 중 하나를 입력으로 받아들입니다. 16 진수는 바이트당 두 문자,8 진수 세 자리,평면 0 에서 255 값의 소수점,전체 8 비트의 이진수를 보여줍니다. 네 개 모두 동일한 기본 바이트를 나타냅니다.
왜 won't 나의 이진 해독?
가장 일반적인 두 가지 이유는 8 의 배수가 아닌 비트 길이와 선택한 베이스에 유효하지 않은 길 잃은 문자입니다. 도구는 정확히 어떤 토큰이 유효하지 않거나 길이가 잘못되었는지 알려주기 때문에 수정할 수 있습니다. 유효하지 않은 바이트 시퀀스 UTF-8 - 예를 들어 잘린 멀티 바이트 문자 - 또한 가비지로 디코딩되지 않고 플래그가 지정됩니다.
이진 번역기는 이모티콘과 영어가 아닌 텍스트를 지원합니까?
예. UTF-8 을 통해 인코딩하기 때문에 ASCII 범위 밖의 문자는 2,3, 4 바이트의 올바른 시퀀스로 표현되며 디코딩하면 원래 문자로 다시 조립됩니다. 이모티콘은 4 바이트가되고 동일한 이모티콘으로 다시 왕복 이동하며 중국어,아랍어 또는 악센트가있는 라틴어 텍스트는 동일한 방식으로 작동합니다.
민감한 텍스트를 여기에서 변환하는 것이 안전한가요?
예. 모든 변환은 브라우저 내부에서 JavaScript 로 실행되므로 입력한 내용이 업로드,로그 또는 저장되지 않으며,한 번 로드된 인터넷 연결 없이도 도구가 계속 작동합니다. 토큰,내부 식별자 또는 개인 메시지가 기기를 떠나지 않고 안전하게 변환할 수 있습니다.
이 도구에서 ASCII 와 UTF-8 의 차이점은 무엇입니까?
ASCII 는 128 개의 영어 문자를 포함하는 7 비트 집합인 반면,UTF-8 은 모든 ASCII 와 다른 모든 유니코드 문자를 포함하는 가변 길이 인코딩입니다. UTF-8 은 ASCII 의 상위 집합이기 때문에 영어 텍스트는 ASCII 테이블이 예측할 바이트를 정확하게 생성하는 반면 악센트 문자,다른 스크립트 및 이모티콘은 ASCII 가 단순히 나타낼 수없는 올바른 멀티 바이트 시퀀스를 얻습니다.



