printf "%02x" 10;; System.String.Format("{0:x2}", 10);; open System;; String.Format("{0:x2}", 10);; val it : string = "0a"
Showing posts with label f#. Show all posts
Showing posts with label f#. Show all posts
5/2/10
Testing String Format in F# Interactive
Labels:
f#
2/5/10
Generic Array to String Function
ArrayToString returns an array as a formatted string. This generic function works with arrays of all types.
Examples
Output
//C# using System.Text; namespace ExpressionSoftware.System { public static class Array { public static string ArrayToString<T>(T[] array, string format) { return ArrayToString(array, format, 16); } public static string ArrayToString<T>(T[] array, string format, int stringBuilderItemCapacity) { var sb = new StringBuilder(array.Length * stringBuilderItemCapacity); foreach (T item in array) { sb.AppendFormat(format, item); } return sb.ToString(); } } }
//F# v1.9.7.8 namespace ExpressionSoftware.System open System.Text type Array = //stringBuilderItemCapacity is an optional int parameter static member ArrayToString(array:'a[], format:string, ?stringBuilderItemCapacity:int) = let stringBuilderItemCapacity = match stringBuilderItemCapacity with | Some(stringBuilderItemCapacity) -> stringBuilderItemCapacity | None -> 16 let sb = new StringBuilder(array.Length * stringBuilderItemCapacity) array |> Array.iter(fun b -> sb.AppendFormat(format, b) |> ignore) sb.ToString()
#PowerShell function arrayToString($array, $format) { $array | %{$result += ($format -f $_)} $result }
Examples
//C# byte[] bytes = { 0, 1, 255 }; int[] ints = { int.MinValue, -1, 0, 256, int.MaxValue }; float[] floats = { -9.99f, 0f, 3.14159f }; char[] chars = { 'a', 'b', 'c', '1', '2', '3' }; string[] strings = { "xyz", "789" }; Debug.WriteLine(Array.ArrayToString(bytes, "{0}", 3)); Debug.WriteLine(Array.ArrayToString(bytes, "{0} ")); Debug.WriteLine(Array.ArrayToString(ints, "{0} ")); Debug.WriteLine(Array.ArrayToString(floats, "{0} ")); Debug.WriteLine(Array.ArrayToString(chars, "{0}", 1)); Debug.WriteLine(Array.ArrayToString(chars, "{0},", 2)); Debug.WriteLine(Array.ArrayToString(strings, "{0} ", 4));
//F# let bytes = [|0uy; 1uy; 255uy|] let ints = [|Int32.MinValue; -1; 0; 256; Int32.MaxValue|] let floats = [|-9.99f; 0.0f; 3.14159f|] let chars = [|'a'; 'b'; 'c'; '1'; '2'; '3'|] let strings = [|"xyz"; "789"|] Array.ArrayToString(bytes, "{0}", 3) |> (fun s -> printfn "%s" s) Array.ArrayToString(bytes, "{0} ") |> (fun s -> printfn "%s" s) Array.ArrayToString(ints, "{0} ") |> (fun s -> printfn "%s" s) Array.ArrayToString(floats, "{0} ") |> (fun s -> printfn "%s" s) Array.ArrayToString(chars, "{0}", 1) |> (fun s -> printfn "%s" s) Array.ArrayToString(chars, "{0},", 2) |> (fun s -> printfn "%s" s) Array.ArrayToString(strings, "{0} ", 4) |> (fun s -> printfn "%s" s)
#PowerShell [byte[]]$bytes = 0, 1, 255 [int[]] $ints = [int32]::MinValue, -1, 0, 256, [int32]::MaxValue [single[]] $floats = -9.99, 0, 3.14159 [char[]] $chars = 'a', 'b', 'c', '1', '2', '3' [string[]] $strings = 'xyz', '789' arrayToString $bytes '{0}' arrayToString $bytes '{0} ' arrayToString $ints '{0} ' arrayToString $floats '{0} ' arrayToString $chars '{0}' arrayToString $chars '{0},' arrayToString $strings '{0} '
Output
01255 0 1 255 -2147483648 -1 0 256 2147483647 -9.99 0 3.14159 abc123 a,b,c,1,2,3, xyz 789
Labels:
.net,
c#,
f#,
generic,
powershell
8/19/09
Hash Functions
GetHash returns the hash value of a byte array.
GetHashStr returns the hash value of a string.
These functions can use any of the hash classes from the System.Security.Cryptography namespace, e.g. MD5, SHA1, SHA256, SHA512.
Examples
GetHashStr returns the hash value of a string.
These functions can use any of the hash classes from the System.Security.Cryptography namespace, e.g. MD5, SHA1, SHA256, SHA512.
//C# using System; using System.Security.Cryptography; using System.Text; namespace ExpressionSoftware.Security.Crypt { public static class Hash { public static byte[] GetHash(byte[] bs, Type hashType) { return HashAlgorithm.Create(hashType.Name).ComputeHash(bs); } public static byte[] GetHashStr(string input, Type hashType) { byte[] bs = Encoding.UTF8.GetBytes(input); return GetHash(bs, hashType); } } }
//F# v1.9.7.8 namespace ExpressionSoftware.Security.Crypt open System open System.Security.Cryptography open System.Text module Hash = let GetHash(bs:byte[], hashType:Type) = HashAlgorithm.Create(hashType.Name).ComputeHash bs let GetHashStr(input:string, hashType:Type) = Encoding.UTF8.GetBytes input |> (fun bs -> GetHash(bs, hashType))
#PowerShell function getHash($bs, $hashType) { $hashType::create().computeHash($bs) } function getHashStr($inputStr, $hashType) { getHash ([system.text.encoding]::utf8.getBytes($inputStr)) $hashType }
Examples
//C# byte[] bs = Encoding.UTF8.GetBytes("foo"); byte[] hash = Hash.GetHash(bs, typeof(SHA1)); Debug.WriteLine(Byte.BytesToString(hash, "{0} ")); 11 238 199 181 234 63 15 219 201 93 13 212 127 60 91 194 117 218 138 51 //output
//F# let hash = Hash.GetHashStr("foo", typeof<SHA1>) Byte.BytesToString(hash, "{0:x} ") |> (fun s -> printfn "%s" s) b ee c7 b5 ea 3f f db c9 5d d d4 7f 3c 5b c2 75 da 8a 33 //output
#PowerShell $hashType = [system.security.cryptography.SHA1] $hash = getHashStr 'foo' $hashType bytesToString $hash '{0:X}' BEEC7B5EA3FFDBC95DDD47F3C5BC275DA8A33 #output
Labels:
.net,
c#,
cryptography,
f#,
hash,
powershell,
security
8/18/09
Bytes to String Function
BytesToString returns a byte array as a formatted string.
02-05-10 This function has been replaced with a generic version - Generic Array to String Function.
Examples
02-05-10 This function has been replaced with a generic version - Generic Array to String Function.
//C# using System.Text; namespace ExpressionSoftware.System { public static class Byte { public static string BytesToString(byte[] bs, string format) { var sb = new StringBuilder(bs.Length * 4); foreach (byte b in bs) { sb.AppendFormat(format, b); } return sb.ToString(); } } }
//F# v1.9.7.8 namespace ExpressionSoftware.System open System.Text module Byte = let BytesToString(bs:byte[], format:string) = let sb = new StringBuilder(bs.Length * 4) bs |> Array.iter(fun b -> sb.AppendFormat(format, b) |> ignore) sb.ToString()
#PowerShell function bytesToString($bs, $format) { $bs | %{$result += ($format -f $_)} $result }
Examples
//C# byte[] bs = { 102, 111, 111 }; Debug.WriteLine(Byte.BytesToString(bs, "{0}")); //default format 102111111 //output
//F# let bs = [|102uy; 111uy; 111uy|] Byte.BytesToString(bs, "{0:d4}-") //4 digit width format |> (fun s -> printfn "%s" s) 0102-0111-0111- //output
#PowerShell [byte[]]$bs = 102,111,111 bytesToString $bs '{0:x} ' #hex format 66 6f 6f #output
Labels:
.net,
c#,
f#,
powershell
8/14/09
Listing Users From the Windows Event Log
GetEventLogUsers returns a list of users from the Windows EventLogs, e.g. Application, Security, System. This function returns the entire dataset, unsorted. See examples for sorting and returning distinct lists.
Note: This function works on Windows XP, but not Window Server 2008.
Examples
Output
Note: This function works on Windows XP, but not Window Server 2008.
//C# using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace ExpressionSoftware.EventLogs { public static class EventLogQuery { public static IEnumerableGetEventLogUsers(string logName) { EventLog log = new EventLog(logName); var users = from e in log.Entries.Cast () select e.UserName; return users; } } }
//F# v1.9.7.8 namespace ExpressionSoftware.EventLogs open System.Diagnostics module EventLogQuery = let GetEventLogUsers logName = let log = new EventLog(logName) log.Entries |> Seq.cast |> Seq.map (fun x -> x.UserName)
#PowerShell function getEventLogUsers($logName) { $log = new-object system.diagnostics.eventLog($logName) $log.entries | %{$_.username} }
Examples
//C# var users = EventLogQuery.GetEventLogUsers("security"); users = users.Distinct().OrderBy(u => u); foreach (string user in users) { Debug.WriteLine(user); }
//F# let users = EventLogQuery.GetEventLogUsers "security" |> Seq.distinct |> Seq.sort for user in users do printfn "%s" user
#PowerShell getEventLogUsers 'security' | sort-object | get-unique
Output
DEV\john NT AUTHORITY\ANONYMOUS LOGON NT AUTHORITY\LOCAL SERVICE NT AUTHORITY\NETWORK SERVICE NT AUTHORITY\SYSTEM
Labels:
.net,
c#,
f#,
powershell,
search
Subscribe to:
Posts (Atom)