어떻게 parapraph를 16 진수 표기법으로 변환 한 다음 원래의 문자열 형식으로 다시 변환 하시겠습니까?단락을 16 진수 표기법으로 변환 한 다음 다시 문자열
(C#을)
측면 참고 : 너 한테의 축소 하드 코어에 점점 O를 그것을/w를 최대한 축소 진수 형식으로 문자열을 넣어 것?
어떻게 parapraph를 16 진수 표기법으로 변환 한 다음 원래의 문자열 형식으로 다시 변환 하시겠습니까?단락을 16 진수 표기법으로 변환 한 다음 다시 문자열
(C#을)
측면 참고 : 너 한테의 축소 하드 코어에 점점 O를 그것을/w를 최대한 축소 진수 형식으로 문자열을 넣어 것?
public string ConvertToHex(string asciiString)
{
string hex = "";
foreach (char c in asciiString)
{
int tmp = c;
hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
}
return hex;
}
stringbuilder를 사용하십시오! –
예. 나는 C#의 첫 번째 작품을 잠시 썼다. Im 파이썬 해커 :) –
정확히 "진수 표기법"에 의해 무엇을 의미합니까? 이는 보통 텍스트가 아닌 바이너리 데이터를 인코딩하는 것을 의미합니다. 텍스트를 어떻게 든 인코딩 (예 : UTF-8 사용) 한 다음 각 바이트를 한 쌍의 문자로 변환하여 이진 데이터를 텍스트로 인코딩해야합니다.
using System;
using System.Text;
public class Hex
{
static void Main()
{
string original = "The quick brown fox jumps over the lazy dog.";
byte[] binary = Encoding.UTF8.GetBytes(original);
string hex = BytesToHex(binary);
Console.WriteLine("Hex: {0}", hex);
byte[] backToBinary = HexToBytes(hex);
string restored = Encoding.UTF8.GetString(backToBinary);
Console.WriteLine("Restored: {0}", restored);
}
private static readonly char[] HexChars = "ABCDEF".ToCharArray();
public static string BytesToHex(byte[] data)
{
StringBuilder builder = new StringBuilder(data.Length*2);
foreach(byte b in data)
{
builder.Append(HexChars[b >> 4]);
builder.Append(HexChars[b & 0xf]);
}
return builder.ToString();
}
public static byte[] HexToBytes(string text)
{
if ((text.Length & 1) != 0)
{
throw new ArgumentException("Invalid hex: odd length");
}
byte[] ret = new byte[text.Length/2];
for (int i=0; i < text.Length; i += 2)
{
ret[i/2] = (byte)(ParseNybble(text[i]) << 4 | ParseNybble(text[i+1]));
}
return ret;
}
private static int ParseNybble(char c)
{
if (c >= '0' && c <= '9')
{
return c-'0';
}
if (c >= 'A' && c <= 'F')
{
return c-'A'+10;
}
if (c >= 'a' && c <= 'f')
{
return c-'A'+10;
}
throw new ArgumentOutOfRangeException("Invalid hex digit: " + c);
}
}
아니요, 이렇게하면 전혀 축소되지 않습니다. 꽤 반대로 - 당신은 훨씬 더 많은 텍스트로 끝날 것입니다! 그러나 바이너리 형식을 압축 할 수 있습니다. 임의의 2 진 데이터를 텍스트로 표현할 때 Base64는 일반 16 진수보다 효율적입니다. 전환에 Convert.ToBase64String 및 Convert.FromBase64String을 사용하십시오.
놀라운! B >> 4는 무엇을합니까? 이동? –
예, 바이트를 오른쪽으로 이동하므로 단일 니블 (0-15)로 끝납니다. 시각적으로 말하면 –
, 어떻게 보입니까? 지금 변경되는 바이트의 값이 아닌가? –
C# 구현에 많은 도움을 줄 수는 없지만 간단한 구현 데이터 압축 알고리즘으로 LZW을 사용하는 것이 좋습니다.
아마도 우리가 묻는다면 아마도 답은 더 빨리 도달 할 수 있습니다. 무엇을 정말로하려고합니까? 일반적인 문자열을 16 진수 표현의 문자열로 변환하는 것은 웹에 대한 16 진수/인코딩 튜토리얼을 작성하지 않는 한 잘못된 접근 방식 인 것처럼 보입니다.
static byte[] HexToBinary(string s) {
byte[] b = new byte[s.Length/2];
for (int i = 0; i < b.Length; i++)
b[i] = Convert.ToByte(s.Substring(i * 2, 2), 16);
return b;
}
static string BinaryToHex(byte[] b) {
StringBuilder sb = new StringBuilder(b.Length * 2);
for (int i = 0; i < b.Length; i++)
sb.Append(Convert.ToString(256 + b[i], 16).Substring(1, 2));
return sb.ToString();
}
base64에 대해 이야기하고 있습니까? 나는 대답을 게시 할 예정 이었지만, 다시 읽으면서 나는 당신이 의미하는 바를 잘 모르겠다. 변환하려는 문자열의 예제를 제공 한 다음 변환 된 동일한 문자열의 예제를 제공 할 수 있습니까? –
Adam과 합의했습니다. 포스터가 원하는 것을 알고 있는지 잘 모르겠습니다. "Hello"를 "48656C6C6F"로 바꾸고 싶다면 꽤 쉽습니다. 그렇다고 생각하지 않습니다. – Coderer
나는 숙제를 짐작하고있다. –