2012-08-27 2 views
0

'ff5ac81c-fc51-9442-b993-60cff48c6b39'와 같은 UID를 Flex의 16 진수 문자열로 변환해야합니다.Adobe Flex : UID를 16 진수 문자열로 변환하는 방법?

public static string GuidToHex(Guid guid) { 
    return ByteToHex(guid.ToByteArray()); 
} 

public static string ByteToHex(byte[] bytes) { 
    StringBuilder sb = new StringBuilder(bytes.Length * 2); 
    foreach (byte b in bytes) { 
     sb.AppendFormat("{0:x2}", b); 
    } 
    return sb.ToString().ToUpper(); 
} 

가 어떻게 액션 스크립트에서이 작업을 수행 할 수 있습니다 : C#에서 이 같은 형식의 매개 변수를 사용할 수 있습니까?

+0

해당 코드를 변환 해 줄 것을 요청합니까? 아니면 알고리즘을 설명해 주시겠습니까? 또는 다른 것? – JeffryHouser

+0

먼저 코드를 변환하십시오. appendFormat-Method에서 "{0 : x2}"매개 변수를 사용하여 내부적으로 어떤 일이 발생하는지 알고 있다면 더 나은 – LKa

+0

도 마찬가지입니다. 그러나 나는 왜 당신이 구글을 할 수없고 그 방법이 무엇인지를 알 수 없다. 그것이 내가해야 할 일이다. – JeffryHouser

답변

0

MSDN에서 아무 것도 찾을 수 없습니다. 무엇이 도움이 될지 궁금합니다. 다른 페이지에서 저는 bytearray가 16 진수로 변환 된 예제를 발견했습니다. 나는 그것을 약간 수정했지만, 지금은 작동 : 나는이 ByteArray임을 처음 4 바이트, 5, 6 및 7과 8의 순서를 변경해야 할 이유

import flash.utils.ByteArray; 

import mx.collections.ArrayCollection; 
import mx.utils.UIDUtil; 

public class RawTypeUtil 
{ 

    private static const hexValues:Array = [ '0', '1', '2', '3', '4', '5', '6', '7', 
              '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; 

    private static const convertSequence:ArrayCollection = new ArrayCollection([ 3, 2, 
                  1, 0, 5, 4, 7, 6, 8, 9, 
                  10, 11, 12, 13, 14, 15 ]); 

    public function RawTypeUtil(lock:Class) 
    { 
     if (lock != RawTypeUtilLock) 
     { 
      throw new Error("Invalid RawTypeUtil access."); 
     } 
    } 

    public static function guidToHex(guid:String) : String 
    { 
     // the UIDUtil expects an uppercase uid... 
     guid = guid.toUpperCase(); 
     if (!UIDUtil.isUID(guid)) 
     { 
      return null; 
     } 

     var bytes:ByteArray = UIDUtil.toByteArray(guid); 
     var hex:String = ""; 

     var byteArray:ArrayCollection = new ArrayCollection(); 
     for (var i:uint = 0; i < bytes.length; i++) 
     { 
      var byte:uint = bytes.readUnsignedByte(); 
      byteArray.addItem(byte); 
     } 

     for (var j:uint = 0; j < convertSequence.length; j++) 
     { 
      var index:uint = convertSequence.getItemAt(j) as uint; 
      var value:uint = byteArray.getItemAt(index) as uint; 
      var l:int = value/16; 
      var r:int = value % 16; 
      hex += hexValues[l] + hexValues[r]; 
     } 

     return hex; 
    } 
} 

나도 몰라 올바른 형식으로 변환됩니다. 누군가 나에게 설명 할 수 있기를 바랍니다.