문제

비슷한 것이 있습니까? sprintf() C#에서?

예를 들어 정수를 2 바이트 바이트 어레이로 변환하고 싶습니다.

같은 것 :

int number = 17;
byte[] s = sprintf("%2c", number);
도움이 되었습니까?

해결책 3

내가 정말로 원했던 것은 이것이었습니다.

short number = 17;
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
writer.Write(number);
writer.Flush();

여기서 핵심은 BinaryWriter 클래스의 쓰기 기능입니다. 18 개의 오버로드가있어 다른 형식을 스트림에 쓰는 바이트 배열로 변환합니다. 제 경우에 쓰고 싶은 번호가 짧은 데이터 유형에 보관되어 있는지 확인해야합니다. 이렇게하면 쓰기 기능이 2 바이트가 작성됩니다.

다른 팁

string s = string.Format("{0:00}", number)

첫 번째 0은 "첫 번째 인수"(즉, 숫자)를 의미합니다. 결장 이후의 00은 형식 지정자 (2 숫자 숫자)입니다.

그러나 .NET 문자열은 UTF-16이므로 2 자주 문자열은 2가 아닌 4 바이트입니다.

(편집 : 질문이 변경되었습니다 string 에게 byte[])

바이트를 얻으려면 사용하십시오 Encoding:

byte[] raw = Encoding.UTF8.GetBytes(s);

(분명히 다른 인코딩은 다른 결과를 줄 수 있습니다. UTF8 은이 데이터에 2 바이트를 줄 것입니다)

실제로 첫 번째 비트의 짧은 버전은 다음과 같습니다.

string s = number.ToString("00");

하지만 string.Format 버전은 더 유연합니다.

편집 : 정수의 값을 바이트 배열로 변환하고 바이트 배열로 변환 한 다음 바이트 배열로 변환하려고한다고 가정합니다 (후자에 대한 Marc의 답변을 확인하십시오.)

int를 바이트 배열로 변환하려면 다음을 사용할 수 있습니다.

byte[] array = BitConverter.GetBytes(17);

그러나 2 (int가 32 비트이기 때문에)가 아닌 4 바이트 배열을 제공합니다. 2 바이트 배열을 사용해야합니다.

byte[] array = BitConverter.GetBytes((short)17);

값을 17로 변환하려면 다음을 사용합니다.

string result = string.Format("{0:00}", 17);

그러나 Marc가 지적한 것처럼 .NET의 각 문자는 2 바이트 (UTF-16)이므로 결과는 4 바이트를 소비합니다 (문자열 길이를 보유하는 2 바이트를 포함하여 6 바이트가됩니다).

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