2008-09-30 1 views
7

C 및 C++에서 컴파일러는 숫자 끝에 'l'을 붙여 'long'이라고 말할 수 있습니다. 예 : long x = 0l;숫자를 바이트로 변환하는 방법은 무엇입니까?

어떻게 C# 컴파일러에 숫자가 바이트인지 알 수 있습니까?

+0

저는 답변을 좋아하지만 숫자를 바이트로 선언하는 것과 같은 바이트로 변환하고 있습니까? – Robert

답변

9

C# language specification에 따르면 문자 바이트를 지정하는 방법은 없습니다 : 당신이 객체의 바이트를 저장하려면

당신은 캐스팅해야합니다. 바이트를 얻으려면 바이트로 캐스트해야합니다. 최선의 방법은 다음과 같이 16 진수로 지정하고 캐스트하는 것입니다.

byte b = (byte) 0x10; 
+2

'(byte)'캐스팅이 "no-op"입니까? 아니면 적어도 * 시간이 필요하다는 사실입니까? – Pacerier

9
byte b = (byte) 123; 

byte b = 123; 

이 같은 일을하더라도. 당신이 경우에

int a = 42; 
byte b = (byte) a; 
+0

정수 리터럴은 int에서 byte로 암시 적으로 변환되므로 number 앞에 cast를 넣지 않아도됩니다. 어떤 사람이 위의 예에 대한 논리를 놓친 경우. –

4

이 기억 : 당신이 예상대로 작동하지 않을 것

byte b = (byte)300; 

당신은 변수가있는 경우.

+5

그 진실의 진실은 내 기대에 달려있다 ;-) – phoog

+3

@casademora는 그걸 정교하게 만든다. – Pacerier

+0

바이트는 0부터 255까지의 숫자 만 저장할 수 있습니다 (1111 1111 = 255). 이 번호는 1 바이트에 저장할 수 없으므로 1 바이트로 "잘립니다". –

1

MSDN은 implicit conversion을 사용합니다. byte type suffix이 표시되지 않지만 명시 적 형변환을 사용할 수 있습니다. 난 그냥 2 자리 16 진수 정수 (int) 상수를 사용하는 것입니다.

1

컴파일러에 알릴 필요가 없습니다. 바이트 변수에는 유효한 값을 할당 할 수 있으며 컴파일러는 바이트에 대한 접미사가 없습니다.

object someValue = (byte) 123;