private static String hexString = "0123456789ABCDEF";
public static void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* 문자열을 모든 문자(중국어 포함)에 적합한 16진수로 인코딩합니다.
*/
공개 정적 문자열 인코딩(String str) {
// 기본 인코딩에 따라 바이트 배열을 가져옵니다
byte[] 바이트 = str.getBytes();
StringBuilder sb = new StringBuilder(bytes.length * 2);
// 바이트 배열의 각 바이트를 2자리 16진수 정수로 분해
for (int i = 0; i
sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
}
return sb.toString();
}
/*
* 16진수를 모든 문자(중국어 포함)에 적합한 문자열로 디코딩합니다.
*/
공개 정적 문자열 디코드(문자열 바이트) {
ByteArrayOutputStream baos = 새로운 ByteArrayOutputStream(bytes.length() / 2);
// 각 2자리 16진수 정수를 1바이트로 조합하세요
for (int i = 0; i
baos.write((hexString.indexOf(bytes.charAt(i)))
.indexOf(bytes.charAt(i + 1))));
return new String(baos.toByteArray());
}
개인 테스트가 가능하며 중국어도 지원됩니다! ! ! 유익하셨다면 꼭 채택해주세요
이 방법을 사용하여 전달된 16진수 문자열을 UTF-8 형식의 문자열로 변환하세요
public static String toStringHex1(String s) {
byte[] baKeyword = 새 바이트[s.length() / 2];
for (int i = 0; i
시도해보세요 {
baKeyword[i] = (바이트) (0xff & Integer.parseInt(s.substring(
i * 2, i * 2 + 2), 16));
} 잡기(예외 e) {
e.printStackTrace();
}
}
시도해보세요 {
s = new String(baKeyword, "utf-8");// UTF-16le:Not
} 잡기(예외 e1) {
e1.printStackTrace();
}
반품;
}
당신의 문제는 숫자를 문자로 변환하는 것 뿐인 것 같은데요, 그렇죠? 그렇다면 전체 텍스트의 여러 줄 소스 코드를 만드는 데 도움을 주지 않겠습니다. 변환 한 줄을 외부 레이어에 중첩할 수 있습니다. 2D 배열을 사용하여 전체 텍스트의 여러 줄 ASCII 코드 변환을 달성하세요:
#include "Stdio.h"
#include "Conio.h"
int main(void)
{
int num[10],i=0;
while(getchar() != 'n')
{
getchar();
scanf("%x",&num[i]);
printf("%c",num[i]);
i++;
}
getch();
0을 반환합니다;
}
원칙은 이렇습니다.
매번 4바이트 형식은 xyy 형식입니다. 16진수만 읽으면 됩니다. scanf("%x",&num[i]); 16진수는 연속된 모든 16진수를 루프로 꺼내어 1차원 배열로 저장합니다.
출력 측면에서는 게을러서 직접 읽어서 출력했는데, 핵심은 printf("%c",num[i]); 16진수 변환 시스템 번호를 ASCII 코드에 해당하는 문자로 변환하여 출력합니다.
이제 이해하셨나요? 형식화된 입력 및 출력을 사용하여 16진수와 출력 문자를 읽습니다. (두 개의 getchar()은 각각 문자와 x를 읽는 데 사용됩니다~~)
#16진수 문자를 2진수 문자로 변환
def str2byte(s):
base='0123456789ABCDEF'
i=0
s = s.upper()
s1=''
내가 c1=s[i]인 동안
c2=s[i+1]
i+=2
b1=base.find(c1)
b2=base.find(c2)
b1 == -1 또는 b2 == -1:
반품 없음
s1+=chr((b1은 s1을 반환합니다
s = 'C7 EB CE F0 BE C6 BA F3 BC DD B3 B5'.replace (' ', '') #공백 제거
s1 = str2바이트
print s1.decode('gbk') #gbk 코드로 디코딩 및 출력
#결과
>>>s1
'xc7xebxcexf0xbexc6xbaxf3xbcxddxb3xb5'
>>>s1.decode('gbk') 인쇄
음주 및 운전을 하지 마세요
위 내용은 JAVA를 사용하여 16진수를 문자열로 변환하는 방법은 무엇입니까? 고마워하는!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!