문제

나는 uuids를 사용하고 있지만 읽고 쓰고 의사 소통하는 것이 특히 좋지 않습니다. 그래서 나는 그들을 인코딩하고 싶습니다. Base64 또는 Base32를 사용할 수는 있지만 어쨌든 쉽지는 않을 것입니다. Base64에는 대문자 문자와 기호가 있습니다. Base32는 조금 더 좋지만 여전히 서투른 물건을 얻을 수 있습니다.

나는 숫자를 맛있는 음소로 인코딩하는 멋지고 깨끗한 방법이 있는지 궁금해서 더 나은 가독성과 희망적으로 약간의 압축을 달성하기 위해 궁금했습니다.

도움이 되었습니까?

해결책

버블 빙빙 시도하기에 좋은 사람입니다. 무의미하지만 읽기 쉬운 출력을 생성합니다.

xesef-disof-gytuf-katof-movif-baxux

다른 팁

이 아이디어를 사용하지 않기를 바랍니다. 자동 저주 생성기 :)

PGP가 읽을 수있는 키를 만들기 위해하는 것과 비슷한 일을 사용하지 말고, 단순히 독특한 단어 목록을 찾으십시오. 128 비트 UUID를 사용하고 있다고 가정 해 봅시다. 256 단어 (2^8)는 16 단어를 의미합니다.

어리석은 질문이지만 사람들이 UUID의/등을 읽거나 쓰는 이유는 무엇입니까? 신청서와 관련하여?

당신이 원하는 것은 16 진수 값을 읽기 쉽게 전달하는 방법 (즉, 전화를 통해 또는 누군가에게 구두로 무엇을 입력 해야하는지 지시 할 때)라면, 나는 당신이 나토 음성 알파벳 아니면 그 미 육군/해군 발음 알파벳.

후자에서 문자 AF는 "ABLE", "Baker", "Charlie", "Dog", "Easy"및 "Fox"로 말하면 HEX 시퀀스 "3FD2CC0E"를 "Three"로 읽을 수 있습니다. 폭스 개 2 찰리 찰리 제로 쉬움 ". UUID는 정확히 같은 방식으로 읽을 것입니다.

S/키 2048 단어의 사전을 사용하여 64 비트 숫자를 6의 시퀀스에 매핑합니다. 사전 정의 단어/음절. (사람들은 항상 욕설을 찾을 것입니다.))))))))))

버블 밥블과베이스 32는 특히 당신의 경우 비효율적입니다. 나만의 알고리즘을 만드는 것이 좋습니다. 20 개의 자음과 6 개의 모음 ( 'Y'포함)이 있으므로 약. 20*6*2+6*6 = 276 자음/모음 모음/자음 쌍. 따라서 번호의 모든 바이트는 한 쌍으로 표시 될 수 있습니다. 약간의 조정으로 알고리즘은 거품 밥 보일보다 훨씬 짧은 현저한 단어를 생성 할 수 있습니다. 주사위를 연주하고 모든 홀수 숫자를 자음/모음으로 교체 할 수도 있습니다. 예를 들어, 0123456789ABCDEF (HEX)는 AbeCidofugyHKRM으로 인코딩합니다. 3141592654 (12 월)는 Hhia-Roir로 인코딩합니다. 이중 자음 등을 대체하기 위해 모음과 짝을 이룰 수있는 10 개의 여분의 자음이 남아 있습니다.

그리고 희망적으로 약간의 압축

당신이 그곳에서 무엇을 의미하는지 정확히 확실하지 않습니다. "읽기 쉬운"또는 "발음 가능한"것을 만드는 것은 필연적으로 필요한 공간을 확장 할 수 있습니다. 어쩌면 당신은 "희망적으로 약간의 중복성"을 의미했을까요? 사용자가 작은 실수를하더라도 시스템이 감지하고 수정할 수 있다면 좋을 것입니다.

실제로 그것은 당신의 uuid가 얼마나 큰지, 그리고 그들이 가장 자주 의사 소통되는지에 크게 달려 있습니다. 전화 나 VoIP를 통해 의사 소통을 해야하는 경우 더 많은 가청 중복성을 원합니다. 숫자 키패드가있는 모바일 장치에 입력 해야하는 경우 알파벳 문자를 입력하기가 어려운 경향이 있습니다. 많이 기록 된 경우 비슷하게 보이는 문자에 대해 걱정해야합니다 (예 : O 및 0 및 O). 그들이 암기해야한다면, 아마도 실제 단어의 줄이 최고 일 것입니다 ( PGP 단어 목록).

그러나 훌륭한 만능 솔루션은 Numberic Digits를 사용하는 것이라고 생각합니다. 그들은 일부 알파시 캐릭터보다 서로 혼동하기가 훨씬 어렵습니다. 모바일 장치에 입력하기 쉽고 사람들은 암기 숫자에 그리 좋지 않습니다.

그리고 문자열의 길이도 나쁘지 않습니다. Base32를 Base 10 (10 진)과 비교해 봅시다. 소수점의 길이는입니다 log_10(32) 해당 Base32 스트링의 길이 또는 약 1.5 배 길이의 길이. Base32의 10자는 15 자리 숫자에 해당합니다.

32베이스에서와 같이 보는 IMO는 크게 형벌이 아닙니다.

그들이 읽기 쉽다면 아마도 독특하지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top