---
product: Chilkat
product_version: 11.7.0
language: csharp
language_label: C#
class: BinData
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/csBinDataRef.html
---
# Chilkat BinData — C# — v11.7.0

> Chilkat 11.7.0 · language=csharp · class=BinData
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/BinData.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/guide.md`.

## Purpose

**Build, transform, encode, decode, inspect, and save binary data.**

`Chilkat.BinData` is a general-purpose mutable byte container used throughout Chilkat for working with binary content in memory. It can load bytes from files, byte arrays, strings, and encoded text; append additional data in many forms; retrieve content as raw bytes, chunks, text, or encoded strings; compute hashes; convert character encodings; validate UTF-8; remove byte ranges; and write the final result to files.

**Load binary content**

Load data from files, byte arrays, strings, encoded strings, or other Chilkat objects that produce binary output.

**Append and build data**

Append bytes, strings, integers, BOMs, counted strings, padded fields, encoded data, and other `BinData` objects.

**Encode and decode**

Convert binary data to and from text encodings such as Base64, hex, URL encoding, and other supported binary encodings.

**Text and charset handling**

Interpret bytes as text, append strings using a specified charset, convert character encodings, and validate UTF-8 content.

**Inspect and modify bytes**

Get byte counts, extract chunks, remove ranges, compare data, and work with specific portions of a binary buffer.

**Hash and save output**

Compute hashes for the contained data and write the resulting bytes to files or pass them to other Chilkat classes.

**Common pattern:** Load or append binary data, perform any needed encoding, decoding, hashing, charset conversion, or byte-level edits, then retrieve the result as bytes, text, an encoded string, or a file. Use `BinData` whenever a Chilkat method needs a mutable in-memory binary buffer.

For an extended overview, see [BinData Class Overview](https://www.chilkatsoft.com/bindata_class_overview.asp).

## Object creation, unlocking and error handling

**Object Creation**

```csharp
Chilkat.BinData obj = new Chilkat.BinData();
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in C#.

Minimal complete program:

```csharp
// Required once per process. Any string unlocks a 30-day trial; use your purchased code in production.
Chilkat.Global glob = new Chilkat.Global();
if (!glob.UnlockBundle("Anything for 30-day trial"))
{
    Console.WriteLine(glob.LastErrorText);
    return;
}

Chilkat.BinData binData = new Chilkat.BinData();

bool success = binData.AppendBom("<charset>");
if (!success)
{
    Console.WriteLine(binData.LastErrorText);   // full diagnostic of what went wrong
    return;
}
```

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `public string DebugLogFilePath {get; set; }` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `public string LastErrorHtml {get; }` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `public string LastErrorText {get; }` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `public string LastErrorXml {get; }` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `public bool LastMethodSuccess {get; set; }` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `public bool VerboseLogging {get; set; }` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `public string Version {get; }` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `NumBytes` | property, read-only | `public int NumBytes {get; }` |
| `AppendBd` | method | `public bool AppendBd(BinData binData);` |
| `AppendBinary` | method | `public bool AppendBinary(byte[] data);` |
| `AppendBom` | method | `public bool AppendBom(string charset);` |
| `AppendByte` | method | `public bool AppendByte(int byteValue);` |
| `AppendCountedString` | method | `public bool AppendCountedString(int numCountBytes, bool bigEndian, string str, string charset);` |
| `AppendData` | method | `public bool AppendData(byte[] data, int numBytes);` |
| `AppendEncoded` | method | `public bool AppendEncoded(string encData, string encoding);` |
| `AppendEncodedSb` | method | `public bool AppendEncodedSb(StringBuilder sb, string encoding);` |
| `AppendInt2` | method | `public bool AppendInt2(int value, bool littleEndian);` |
| `AppendInt4` | method | `public bool AppendInt4(int value, bool littleEndian);` |
| `AppendPadded` | method | `public bool AppendPadded(string str, string charset, bool padWithSpace, int fieldLen);` |
| `AppendSb` | method | `public bool AppendSb(StringBuilder sb, string charset);` |
| `AppendString` | method | `public bool AppendString(string str, string charset);` |
| `ByteSwap` | method | `public void ByteSwap(int size);` |
| `CharsetConvert` | method | `public bool CharsetConvert(string fromCharset, string toCharset, bool allOrNone);` |
| `Clear` | method | `public bool Clear();` |
| `ContentsEqual` | method | `public bool ContentsEqual(BinData binData);` |
| `FindString` | method | `public int FindString(string str, int startIdx, string charset);` |
| `GetBinary` | method | `public byte[] GetBinary();` |
| `GetBinaryChunk` | method | `public byte[] GetBinaryChunk(int offset, int numBytes);` |
| `GetByte` | method | `public int GetByte(int index);` |
| `GetData` | method | `public byte[] GetData();` |
| `GetDataChunk` | method | `public byte[] GetDataChunk(int offset, int numBytes);` |
| `GetEncoded` | method | `public string GetEncoded(string encoding);` |
| `GetEncodedChunk` | method | `public string GetEncodedChunk(int offset, int numBytes, string encoding);` |
| `GetEncodedSb` | method | `public bool GetEncodedSb(string encoding, StringBuilder sb);` |
| `GetHash` | method | `public string GetHash(string algorithm, string encoding);` |
| `GetInt2` | method | `public int GetInt2(int index, bool littleEndian);` |
| `GetInt4` | method | `public int GetInt4(int index, bool littleEndian);` |
| `GetString` | method | `public string GetString(string charset);` |
| `GetTextChunk` | method | `public string GetTextChunk(int startIdx, int numBytes, string charset);` |
| `GetUInt2` | method | `public uint GetUInt2(int index, bool littleEndian);` |
| `GetUInt4` | method | `public uint GetUInt4(int index, bool littleEndian);` |
| `IsValidUtf8` | method | `public bool IsValidUtf8();` |
| `LoadBinary` | method | `public bool LoadBinary(byte[] data);` |
| `LoadEncoded` | method | `public bool LoadEncoded(string encData, string encoding);` |
| `LoadFile` | method | `public bool LoadFile(string path);` |
| `RemoveByteVal` | method | `public void RemoveByteVal(int value);` |
| `RemoveChunk` | method | `public bool RemoveChunk(int offset, int numBytes);` |
| `SecureClear` | method | `public bool SecureClear();` |
| `WriteAppendFile` | method | `public bool WriteAppendFile(string path);` |
| `WriteFile` | method | `public bool WriteFile(string path);` |

## Properties

### BinData.NumBytes

`Chilkat 11.7.0 · csharp · BinData · NumBytes · property · read-only · since 9.5.0.51`

```csharp
public int NumBytes {get; }
```

The number of bytes contained within the object.

## Methods

### BinData.AppendBd

`Chilkat 11.7.0 · csharp · BinData · AppendBd · method · since 9.5.0.62`

```csharp
public bool AppendBd(BinData binData);
```

Appends the contents of another BinData to this object.

Returns true for success, false for failure.

### BinData.AppendBinary

`Chilkat 11.7.0 · csharp · BinData · AppendBinary · method · since 9.5.0.51`

```csharp
public bool AppendBinary(byte[] data);
```

Appends binary data to the current contents, if any.

Returns true for success, false for failure.

### BinData.AppendBom

`Chilkat 11.7.0 · csharp · BinData · AppendBom · method · since 9.5.0.62`

```csharp
public bool AppendBom(string charset);
```

Appends the appropriate BOM (byte order mark), also known as a `preamble`, for the given charset. If the `charset` has no defined BOM, then nothing is appended. An application would typically call this to append the utf-8, utf-16, or utf-32 BOM.

Returns true for success, false for failure.

### BinData.AppendByte

`Chilkat 11.7.0 · csharp · BinData · AppendByte · method · since 9.5.0.77`

```csharp
public bool AppendByte(int byteValue);
```

Appends a single byte. The `byteValue` should be a value from 0 to 255.

Returns true for success, false for failure.

### BinData.AppendCountedString

`Chilkat 11.7.0 · csharp · BinData · AppendCountedString · method · since 9.5.0.91`

```csharp
public bool AppendCountedString(int numCountBytes, bool bigEndian, string str, string charset);
```

Appends a byte count followed by the string in the desired character encoding, such as `utf-8`. The `numCountBytes` is the size in bytes of the integer to represent the byte count. If 0, then a minimal number of bytes is used. If `bigEndian` is `true`, the byte count is appended in big endian byte ordering, otherwise little-ending byte ordering. The `str` is the string to be appended. The `charset` is the character encoding, such as `utf-8`, `utf-16`, `windows-1252`, etc.

Returns true for success, false for failure.

### BinData.AppendData

`Chilkat 11.7.0 · csharp · BinData · AppendData · method · since 11.0.0`

```csharp
public bool AppendData(byte[] data, int numBytes);
```

Appends binary data to the current contents.

Returns true for success, false for failure.

### BinData.AppendEncoded

`Chilkat 11.7.0 · csharp · BinData · AppendEncoded · method · since 9.5.0.51`

```csharp
public bool AppendEncoded(string encData, string encoding);
```

Appends encoded binary data to the current data. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns true for success, false for failure.

### BinData.AppendEncodedSb

`Chilkat 11.7.0 · csharp · BinData · AppendEncodedSb · method · since 9.5.0.62`

```csharp
public bool AppendEncodedSb(StringBuilder sb, string encoding);
```

Decodes the contents of `sb` and appends the decoded bytes to this object. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns true for success, false for failure.

### BinData.AppendInt2

`Chilkat 11.7.0 · csharp · BinData · AppendInt2 · method · since 9.5.0.77`

```csharp
public bool AppendInt2(int value, bool littleEndian);
```

Appends a 16-bit integer (2 bytes). If `littleEndian` is `true`, then the integer bytes are appended in little-endian byte order, otherwise big-endian byte order is used.

Returns true for success, false for failure.

### BinData.AppendInt4

`Chilkat 11.7.0 · csharp · BinData · AppendInt4 · method · since 9.5.0.77`

```csharp
public bool AppendInt4(int value, bool littleEndian);
```

Appends a 32-bit integer (4 bytes). If `littleEndian` is `true`, then the integer bytes are appended in little-endian byte order, otherwise big-endian byte order is used.

Returns true for success, false for failure.

### BinData.AppendPadded

`Chilkat 11.7.0 · csharp · BinData · AppendPadded · method · since 9.5.0.80`

```csharp
public bool AppendPadded(string str, string charset, bool padWithSpace, int fieldLen);
```

Appends a string to this object, padded to the `fieldLen` with NULL or SPACE chars. If `padWithSpace` is `true`, then SPACE chars are used and the string is not null-terminated. If `fieldLen` is `false`, then null bytes are used. The `charset` controls the byte representation to use, such as `utf-8`.

Note: This call will always append a total number of bytes equal to `fieldLen`. If the `str` is longer than `fieldLen`, the method returns `false` to indicate failure and nothing is appended.

Returns true for success, false for failure.

### BinData.AppendSb

`Chilkat 11.7.0 · csharp · BinData · AppendSb · method · since 9.5.0.62`

```csharp
public bool AppendSb(StringBuilder sb, string charset);
```

Appends the contents of a StringBuilder to this object.

Returns true for success, false for failure.

### BinData.AppendString

`Chilkat 11.7.0 · csharp · BinData · AppendString · method · since 9.5.0.62`

```csharp
public bool AppendString(string str, string charset);
```

Appends a string to this object. (This does not append the BOM. If a BOM is required, the AppendBom method can be called to append the appropriate BOM.)

Returns true for success, false for failure.

### BinData.ByteSwap

`Chilkat 11.7.0 · csharp · BinData · ByteSwap · method · since 11.0.0`

```csharp
public void ByteSwap(int size);
```

Does either 16-bit or 32-bit byte swapping of the entire contents. If `size` equals 16, then swaps in 2 bytes (e.g., 0x1234 → 0x3412). If `size` equals 32, then swaps 4 bytes (e.g., 0x12345678 → 0x78563412)

### BinData.CharsetConvert

`Chilkat 11.7.0 · csharp · BinData · CharsetConvert · method · since 11.0.0`

```csharp
public bool CharsetConvert(string fromCharset, string toCharset, bool allOrNone);
```

This method converts the character encoding of an object's contents from one format to another, such as from Windows-1252 to UTF-8. The `allOrNone` parameter determines error handling for unrepresentable bytes. If `allOrNone` is `true`, the object's contents remain unchanged when errors occur. If `false`, error bytes are discarded. The method returns `true` if successful and `false` if errors occur.

Returns true for success, false for failure.

### BinData.Clear

`Chilkat 11.7.0 · csharp · BinData · Clear · method · since 9.5.0.51`

```csharp
public bool Clear();
```

Clears the contents.

Returns true for success, false for failure.

### BinData.ContentsEqual

`Chilkat 11.7.0 · csharp · BinData · ContentsEqual · method · since 9.5.0.62`

```csharp
public bool ContentsEqual(BinData binData);
```

Return `true` if the contents of this object equals the contents of `binData`.

### BinData.FindString

`Chilkat 11.7.0 · csharp · BinData · FindString · method · since 9.5.0.85`

```csharp
public int FindString(string str, int startIdx, string charset);
```

Return the index where the first occurrence of `str` is found. Return -1 if not found. The `startIdx` indicates the byte index where the search begins. The `charset` specifies the byte representation of `str` that is to be searched. For example, it can be `utf-8`, `windows-1252`, `ansi`, `utf-16`, etc.

### BinData.GetBinary

`Chilkat 11.7.0 · csharp · BinData · GetBinary · method · since 9.5.0.51`

```csharp
public byte[] GetBinary();
```

Retrieves the binary data contained within the object.

Returns an empty byte array on failure

### BinData.GetBinaryChunk

`Chilkat 11.7.0 · csharp · BinData · GetBinaryChunk · method · since 9.5.0.51`

```csharp
public byte[] GetBinaryChunk(int offset, int numBytes);
```

Retrieves a chunk of the binary data contained within the object.

Returns an empty byte array on failure

### BinData.GetByte

`Chilkat 11.7.0 · csharp · BinData · GetByte · method · since 9.5.0.92`

```csharp
public int GetByte(int index);
```

Returns the value of the byte at the given `index`. The returned value is an integer from 0 to 255.

### BinData.GetData

`Chilkat 11.7.0 · csharp · BinData · GetData · method · since 11.0.0`

```csharp
public byte[] GetData();
```

Retrieves the binary data contained within the object.

Returns an empty byte array on failure

### BinData.GetDataChunk

`Chilkat 11.7.0 · csharp · BinData · GetDataChunk · method · since 11.0.0`

```csharp
public byte[] GetDataChunk(int offset, int numBytes);
```

Retrieves a chunk of the binary data contained within the object.

Returns an empty byte array on failure

### BinData.GetEncoded

`Chilkat 11.7.0 · csharp · BinData · GetEncoded · method · since 9.5.0.51`

```csharp
public string GetEncoded(string encoding);
```

Retrieves the binary data as an encoded string. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns `null` on failure

### BinData.GetEncodedChunk

`Chilkat 11.7.0 · csharp · BinData · GetEncodedChunk · method · since 9.5.0.51`

```csharp
public string GetEncodedChunk(int offset, int numBytes, string encoding);
```

Retrieves a chunk of the binary data and returns it in encoded form. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns `null` on failure

### BinData.GetEncodedSb

`Chilkat 11.7.0 · csharp · BinData · GetEncodedSb · method · since 9.5.0.64`

```csharp
public bool GetEncodedSb(string encoding, StringBuilder sb);
```

Writes the encoded data to a StringBuilder. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns true for success, false for failure.

### BinData.GetHash

`Chilkat 11.7.0 · csharp · BinData · GetHash · method · since 9.5.0.91`

```csharp
public string GetHash(string algorithm, string encoding);
```

Returns the hash of the contents of this object. The `algorithm` is the hash algorithm, and can be `sha1`, `sha256`, `sha384`, `sha512`, `sha3-224`, `sha3-256`, `sha3-384`, `sha3-512`, `md2`, `md5`, `ripemd128`, `ripemd160`,`ripemd256`, or `ripemd320`. The `encoding` can be `base64`, `modBase64`, `base64Url`, `base32`, `base58`, `qp` (for quoted-printable), `url` (for url-encoding), `hex`, `hexLower`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns `null` on failure

### BinData.GetInt2

`Chilkat 11.7.0 · csharp · BinData · GetInt2 · method · since 9.5.0.88`

```csharp
public int GetInt2(int index, bool littleEndian);
```

Returns the value of the 16-bit signed integer stored in big-endian or little-endian byte ordering at the given index.

### BinData.GetInt4

`Chilkat 11.7.0 · csharp · BinData · GetInt4 · method · since 9.5.0.88`

```csharp
public int GetInt4(int index, bool littleEndian);
```

Returns the value of the 32-bit signed integer stored in big-endian or little-endian byte ordering at the given index.

### BinData.GetString

`Chilkat 11.7.0 · csharp · BinData · GetString · method · since 9.5.0.67`

```csharp
public string GetString(string charset);
```

Interprets the bytes according to `charset` and returns the string. The `charset` can be `utf-8`, `utf-16`, `ansi`, `iso-8859-*`, `windows-125*`, or any of the supported character encodings listed in the link below.

Returns `null` on failure

See also:

- [Chilkat Supported Character Encodings](http://cknotes.com/chilkat-charsets-character-encodings-supported/)

### BinData.GetTextChunk

`Chilkat 11.7.0 · csharp · BinData · GetTextChunk · method · since 9.5.0.85`

```csharp
public string GetTextChunk(int startIdx, int numBytes, string charset);
```

Returns `numBytes` bytes starting at `startIdx`. The bytes are interpreted according to `charset` (for example, `utf-8`, `ansi`, `utf-16`, `windows-1252`, etc.)

Returns `null` on failure

### BinData.GetUInt2

`Chilkat 11.7.0 · csharp · BinData · GetUInt2 · method · since 9.5.0.88`

```csharp
public uint GetUInt2(int index, bool littleEndian);
```

Returns the value of the 16-bit unsigned integer stored in big-endian or little-endian byte ordering at the given index.

### BinData.GetUInt4

`Chilkat 11.7.0 · csharp · BinData · GetUInt4 · method · since 9.5.0.88`

```csharp
public uint GetUInt4(int index, bool littleEndian);
```

Returns the value of the 32-bit unsigned integer stored in big-endian or little-endian byte ordering at the given index.

### BinData.IsValidUtf8

`Chilkat 11.7.0 · csharp · BinData · IsValidUtf8 · method · since 10.1.0`

```csharp
public bool IsValidUtf8();
```

Returns `true` if this object contains valid utf-8 byte sequences. Any invalid byte sequence that is not valid utf-8 will cause this function to return `false`.

Returns true for success, false for failure.

### BinData.LoadBinary

`Chilkat 11.7.0 · csharp · BinData · LoadBinary · method · since 9.5.0.51`

```csharp
public bool LoadBinary(byte[] data);
```

Loads binary data and replaces the current contents, if any.

Returns true for success, false for failure.

### BinData.LoadEncoded

`Chilkat 11.7.0 · csharp · BinData · LoadEncoded · method · since 9.5.0.51`

```csharp
public bool LoadEncoded(string encData, string encoding);
```

Loads binary data from an encoded string, replacing the current contents, if any. The `encoding` may be `Base64`, `modBase64`, `base64Url`, `Base32`, `Base58`, `QP` (for quoted-printable), `URL` (for url-encoding), `Hex`, or any of the encodings found at [Chilkat Binary Encodings List](https://www.chilkatsoft.com/binary_encodings.asp).

Returns true for success, false for failure.

### BinData.LoadFile

`Chilkat 11.7.0 · csharp · BinData · LoadFile · method · since 9.5.0.51`

```csharp
public bool LoadFile(string path);
```

Loads data from a file.

Returns true for success, false for failure.

### BinData.RemoveByteVal

`Chilkat 11.7.0 · csharp · BinData · RemoveByteVal · method · since 9.5.0.90`

```csharp
public void RemoveByteVal(int value);
```

Removes bytes having a specified value (0-255). For example, to remove all null bytes, pass 0 in `value`.

### BinData.RemoveChunk

`Chilkat 11.7.0 · csharp · BinData · RemoveChunk · method · since 9.5.0.51`

```csharp
public bool RemoveChunk(int offset, int numBytes);
```

Removes a chunk of bytes from the binary data.

Returns true for success, false for failure.

### BinData.SecureClear

`Chilkat 11.7.0 · csharp · BinData · SecureClear · method · since 9.5.0.67`

```csharp
public bool SecureClear();
```

Securely clears the contents by writing 0 bytes to the memory prior to deallocating the internal memory.

Returns true for success, false for failure.

### BinData.WriteAppendFile

`Chilkat 11.7.0 · csharp · BinData · WriteAppendFile · method · since 9.5.0.91`

```csharp
public bool WriteAppendFile(string path);
```

Appends the contents of this object to a file.

Returns true for success, false for failure.

### BinData.WriteFile

`Chilkat 11.7.0 · csharp · BinData · WriteFile · method · since 9.5.0.62`

```csharp
public bool WriteFile(string path);
```

Writes the contents to a file.

Returns true for success, false for failure.

## Related classes

[`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/csharp/classes/StringBuilder.md)

