Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Security / Util / Hex.cs / 1 / Hex.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*
* Hex.cs
*
* Operations to convert to and from Hex
*
*/
namespace System.Security.Util
{
using System;
using System.Security;
internal static class Hex
{
// converts number to hex digit. Does not do any range checks.
static char HexDigit(int num) {
return (char)((num < 10) ? (num + '0') : (num + ('A' - 10)));
}
public static String EncodeHexString(byte[] sArray)
{
String result = null;
if(sArray != null) {
char[] hexOrder = new char[sArray.Length * 2];
int digit;
for(int i = 0, j = 0; i < sArray.Length; i++) {
digit = (int)((sArray[i] & 0xf0) >> 4);
hexOrder[j++] = HexDigit(digit);
digit = (int)(sArray[i] & 0x0f);
hexOrder[j++] = HexDigit(digit);
}
result = new String(hexOrder);
}
return result;
}
internal static string EncodeHexStringFromInt(byte[] sArray) {
String result = null;
if(sArray != null) {
char[] hexOrder = new char[sArray.Length * 2];
int i = sArray.Length;
int digit, j=0;
while (i-- > 0) {
digit = (sArray[i] & 0xf0) >> 4;
hexOrder[j++] = HexDigit(digit);
digit = sArray[i] & 0x0f;
hexOrder[j++] = HexDigit(digit);
}
result = new String(hexOrder);
}
return result;
}
public static int ConvertHexDigit(Char val)
{
if (val <= '9' && val >= '0')
return (val - '0');
else if (val >= 'a' && val <= 'f')
return ((val - 'a') + 10);
else if (val >= 'A' && val <= 'F')
return ((val - 'A') + 10);
else
throw new ArgumentException( Environment.GetResourceString( "ArgumentOutOfRange_Index" ) );
}
public static byte[] DecodeHexString(String hexString)
{
if (hexString == null)
throw new ArgumentNullException( "hexString" );
bool spaceSkippingMode = false;
int i = 0;
int length = hexString.Length;
if ((length >= 2) &&
(hexString[0] == '0') &&
( (hexString[1] == 'x') || (hexString[1] == 'X') ))
{
length = hexString.Length - 2;
i = 2;
}
// Hex strings must always have 2N or (3N - 1) entries.
if (length % 2 != 0 && length % 3 != 2)
{
throw new ArgumentException( Environment.GetResourceString( "Argument_InvalidHexFormat" ) );
}
byte[] sArray;
if (length >=3 && hexString[i + 2] == ' ')
{
spaceSkippingMode = true;
// Each hex digit will take three spaces, except the first (hence the plus 1).
sArray = new byte[length / 3 + 1];
}
else
{
// Each hex digit will take two spaces
sArray = new byte[length / 2];
}
int digit;
int rawdigit;
for (int j = 0; i < hexString.Length; i += 2, j++) {
rawdigit = ConvertHexDigit(hexString[i]);
digit = ConvertHexDigit(hexString[i+1]);
sArray[j] = (byte) (digit | (rawdigit << 4));
if (spaceSkippingMode)
i++;
}
return(sArray);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*
* Hex.cs
*
* Operations to convert to and from Hex
*
*/
namespace System.Security.Util
{
using System;
using System.Security;
internal static class Hex
{
// converts number to hex digit. Does not do any range checks.
static char HexDigit(int num) {
return (char)((num < 10) ? (num + '0') : (num + ('A' - 10)));
}
public static String EncodeHexString(byte[] sArray)
{
String result = null;
if(sArray != null) {
char[] hexOrder = new char[sArray.Length * 2];
int digit;
for(int i = 0, j = 0; i < sArray.Length; i++) {
digit = (int)((sArray[i] & 0xf0) >> 4);
hexOrder[j++] = HexDigit(digit);
digit = (int)(sArray[i] & 0x0f);
hexOrder[j++] = HexDigit(digit);
}
result = new String(hexOrder);
}
return result;
}
internal static string EncodeHexStringFromInt(byte[] sArray) {
String result = null;
if(sArray != null) {
char[] hexOrder = new char[sArray.Length * 2];
int i = sArray.Length;
int digit, j=0;
while (i-- > 0) {
digit = (sArray[i] & 0xf0) >> 4;
hexOrder[j++] = HexDigit(digit);
digit = sArray[i] & 0x0f;
hexOrder[j++] = HexDigit(digit);
}
result = new String(hexOrder);
}
return result;
}
public static int ConvertHexDigit(Char val)
{
if (val <= '9' && val >= '0')
return (val - '0');
else if (val >= 'a' && val <= 'f')
return ((val - 'a') + 10);
else if (val >= 'A' && val <= 'F')
return ((val - 'A') + 10);
else
throw new ArgumentException( Environment.GetResourceString( "ArgumentOutOfRange_Index" ) );
}
public static byte[] DecodeHexString(String hexString)
{
if (hexString == null)
throw new ArgumentNullException( "hexString" );
bool spaceSkippingMode = false;
int i = 0;
int length = hexString.Length;
if ((length >= 2) &&
(hexString[0] == '0') &&
( (hexString[1] == 'x') || (hexString[1] == 'X') ))
{
length = hexString.Length - 2;
i = 2;
}
// Hex strings must always have 2N or (3N - 1) entries.
if (length % 2 != 0 && length % 3 != 2)
{
throw new ArgumentException( Environment.GetResourceString( "Argument_InvalidHexFormat" ) );
}
byte[] sArray;
if (length >=3 && hexString[i + 2] == ' ')
{
spaceSkippingMode = true;
// Each hex digit will take three spaces, except the first (hence the plus 1).
sArray = new byte[length / 3 + 1];
}
else
{
// Each hex digit will take two spaces
sArray = new byte[length / 2];
}
int digit;
int rawdigit;
for (int j = 0; i < hexString.Length; i += 2, j++) {
rawdigit = ConvertHexDigit(hexString[i]);
digit = ConvertHexDigit(hexString[i+1]);
sArray[j] = (byte) (digit | (rawdigit << 4));
if (spaceSkippingMode)
i++;
}
return(sArray);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HiddenFieldPageStatePersister.cs
- XMLUtil.cs
- DataGridViewSelectedColumnCollection.cs
- X509SubjectKeyIdentifierClause.cs
- MsmqDiagnostics.cs
- SectionXmlInfo.cs
- AssemblyAssociatedContentFileAttribute.cs
- BooleanAnimationUsingKeyFrames.cs
- WaitForChangedResult.cs
- WebPartManagerInternals.cs
- WebPartConnectionsCancelEventArgs.cs
- RequiredFieldValidator.cs
- MDIControlStrip.cs
- SplineQuaternionKeyFrame.cs
- TypeDescriptionProviderAttribute.cs
- RSAPKCS1SignatureFormatter.cs
- SQLSingleStorage.cs
- ValueSerializerAttribute.cs
- TypeDescriptionProvider.cs
- MonthChangedEventArgs.cs
- ConfigXmlDocument.cs
- ValueSerializerAttribute.cs
- ToolTipAutomationPeer.cs
- LicenseContext.cs
- WindowsListViewItemCheckBox.cs
- XmlSchemaImporter.cs
- DataBoundLiteralControl.cs
- ObjectConverter.cs
- KeyConverter.cs
- QueryCacheKey.cs
- ServiceEndpointElement.cs
- TagMapInfo.cs
- HostVisual.cs
- AvtEvent.cs
- DnsEndpointIdentity.cs
- GestureRecognitionResult.cs
- ListSurrogate.cs
- IPGlobalProperties.cs
- BCLDebug.cs
- JsonQNameDataContract.cs
- SmiConnection.cs
- SQLInt64.cs
- AdjustableArrowCap.cs
- DecimalStorage.cs
- UserControlParser.cs
- EntityException.cs
- DataServiceRequest.cs
- ActivityCodeDomSerializer.cs
- CodeIdentifiers.cs
- RoutedEventConverter.cs
- ClientSponsor.cs
- DeviceSpecificDialogCachedState.cs
- XmlWrappingReader.cs
- VoiceObjectToken.cs
- MenuItem.cs
- FolderBrowserDialog.cs
- QuerySubExprEliminator.cs
- GridItemProviderWrapper.cs
- EndEvent.cs
- PreviewPrintController.cs
- MailAddress.cs
- TextModifierScope.cs
- UIAgentInitializationException.cs
- Floater.cs
- XmlEncodedRawTextWriter.cs
- StringSorter.cs
- ValidationResults.cs
- ListViewInsertedEventArgs.cs
- StorageTypeMapping.cs
- TreeViewHitTestInfo.cs
- WebContext.cs
- Assert.cs
- CursorConverter.cs
- Point3DCollection.cs
- SoapAttributes.cs
- ModuleElement.cs
- JoinSymbol.cs
- WorkflowIdleElement.cs
- MethodToken.cs
- BasicDesignerLoader.cs
- WeakReferenceList.cs
- mactripleDES.cs
- OleDbDataReader.cs
- SizeConverter.cs
- QuotedStringFormatReader.cs
- HitTestParameters3D.cs
- SortKey.cs
- CustomSignedXml.cs
- XmlNamespaceDeclarationsAttribute.cs
- GenericParameterDataContract.cs
- CompilationLock.cs
- DataListItem.cs
- _NegoState.cs
- RoutedEvent.cs
- EdmTypeAttribute.cs
- ToolStripProgressBar.cs
- ResourcePermissionBaseEntry.cs
- Double.cs
- ExpressionDumper.cs
- ApplicationActivator.cs