---
product: Chilkat
product_version: 11.7.0
language: tcl
language_label: Tcl
class: CkByteData
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/tclCkByteDataRef.html
---
# Chilkat CkByteData — Tcl — v11.7.0

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

## Purpose

Represents a chunk of byte data and provides methods for accessing it, adding to it, or saving and loading from files.

## Object creation, unlocking and error handling

**Object Creation**

```tcl
# 'this' is not a keyword in Tcl. It can freely be used as a variable name.
set this [new CkByteData]
```

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 Tcl.

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.

## Member index

| Member | Kind | Signature |
|---|---|---|
| `SecureClear` | property, read/write | `boolean 1/0 set boolVal [CkByteData_get_SecureClear $this] CkByteData_put_SecureClear $this $boolVal` |
| `appendChar` | method | `# ch is a char CkByteData_appendChar $this $ch` |
| `appendCharN` | method | `# ch is a char # numTimes is an integer CkByteData_appendCharN $this $ch $numTimes` |
| `appendEncoded` | method | `# str is a string # encoding is a string CkByteData_appendEncoded $this $str $encoding` |
| `appendEncodedW` | method | `# str is a utf-16 string # encoding is a utf-16 string CkByteData_appendEncodedW $this $str $encoding` |
| `appendFile` | method | `# path is a string set retBool [CkByteData_appendFile $this $path]` |
| `appendFileW` | method | `# path is a utf-16 string set retBool [CkByteData_appendFileW $this $path]` |
| `appendInt` | method | `# intValue is an integer # littleEndian is a boolean CkByteData_appendInt $this $intValue $littleEndian` |
| `appendRandom` | method | `# numBytes is an integer CkByteData_appendRandom $this $numBytes` |
| `appendShort` | method | `# shortValue is an integer # littleEndian is a boolean CkByteData_appendShort $this $shortValue $littleEndian` |
| `appendStr` | method | `# str is a string CkByteData_appendStr $this $str` |
| `appendStrW` | method | `# str is a utf-16 string # charset is a utf-16 string CkByteData_appendStrW $this $str $charset` |
| `byteSwap4321` | method | `CkByteData_byteSwap4321 $this` |
| `clear` | method | `CkByteData_clear $this` |
| `dropData` | method | `CkByteData_dropData $this` |
| `encode` | method | `# encoding is a string # str is a CkString CkByteData_encode $this $encoding $str` |
| `encodeW` | method | `# encoding is a utf-16 string # str is a CkString CkByteData_encodeW $this $encoding $str` |
| `ensureBuffer` | method | `# expectedNumBytes is an integer set status [CkByteData_ensureBuffer $this $expectedNumBytes]` |
| `getByte` | method | `# byteIndex is an integer set retByte [CkByteData_getByte $this $byteIndex]` |
| `getChar` | method | `# byteIndex is an integer set retChar [CkByteData_getChar $this $byteIndex]` |
| `getData` | method | `set binary_data [CkByteData_getData $this]` |
| `getDataAt` | method | `# byteIndex is an integer set binary_data [CkByteData_getDataAt $this $byteIndex]` |
| `getEncodedW` | method | `# encoding is a utf-16 string set utf16_text [CkByteData_getEncodedW $this $encoding]` |
| `getInt` | method | `# byteIndex is an integer set retInt [CkByteData_getInt $this $byteIndex]` |
| `getRange` | method | `# byteIndex is an integer # numBytes is an integer set binary_data [CkByteData_getRange $this $byteIndex $numBytes]` |
| `getSize` | method | `set retInt [CkByteData_getSize $this]` |
| `is7bit` | method | `set retBool [CkByteData_is7bit $this]` |
| `loadFile` | method | `# path is a string set retBool [CkByteData_loadFile $this $path]` |
| `loadFileW` | method | `# path is a utf-16 string set retBool [CkByteData_loadFileW $this $path]` |
| `pad` | method | `# blockSize is an integer # paddingScheme is an integer CkByteData_pad $this $blockSize $paddingScheme` |
| `removeChunk` | method | `# startIndex is an integer # numBytes is an integer CkByteData_removeChunk $this $startIndex $numBytes` |
| `replaceChar` | method | `# existingByteValue is a byte # replacementByteValue is a byte CkByteData_replaceChar $this $existingByteValue $replacementByteValue` |
| `saveFile` | method | `# path is a string set retBool [CkByteData_saveFile $this $path]` |
| `saveFileW` | method | `# path is a utf-16 string set retBool [CkByteData_saveFileW $this $path]` |
| `shorten` | method | `# numBytes is an integer CkByteData_shorten $this $numBytes` |
| `to_ws` | method | `# charset is a string set utf16_text [CkByteData_to_ws $this $charset]` |
| `unpad` | method | `# blockSize is an integer # paddingScheme is an integer CkByteData_unpad $this $blockSize $paddingScheme` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### CkByteData.SecureClear

`Chilkat 11.7.0 · tcl · CkByteData · SecureClear · property · read/write · since 9.5.0.73`

```tcl
boolean 1/0
set boolVal [CkByteData_get_SecureClear $this]

CkByteData_put_SecureClear $this $boolVal
```

If set to `1`, then memory is always first overwritten with zero bytes prior to deallocation. The default value of this property is `0`.

## Methods

### CkByteData.appendChar

`Chilkat 11.7.0 · tcl · CkByteData · appendChar · method`

```tcl
# ch is a char

CkByteData_appendChar $this $ch
```

Appends a single byte.

### CkByteData.appendCharN

`Chilkat 11.7.0 · tcl · CkByteData · appendCharN · method`

```tcl
# ch is a char

# numTimes is an integer

CkByteData_appendCharN $this $ch  $numTimes
```

Appends a single char N times. The equivalent of calling appendChar N times.

### CkByteData.appendEncoded

`Chilkat 11.7.0 · tcl · CkByteData · appendEncoded · method`

```tcl
# str is a string

# encoding is a string

CkByteData_appendEncoded $this $str  $encoding
```

Appends binary data from an encoded string. The encoding can be specified as `hex`, `base64`, `url`, `quoted-printable`, `modBase64`, `base58`, or `base32`. The input string is decoded from the specified encoding and the binary data is appended to the calling object's content.

### CkByteData.appendEncodedW

`Chilkat 11.7.0 · tcl · CkByteData · appendEncodedW · method`

```tcl
# str is a utf-16 string

# encoding is a utf-16 string

CkByteData_appendEncodedW $this $str  $encoding
```

To be documented soon...

### CkByteData.appendFile

`Chilkat 11.7.0 · tcl · CkByteData · appendFile · method`

```tcl
# path is a string

set retBool [CkByteData_appendFile $this $path]
```

Opens a file for binary read, appends the file contents, and closes the file.

### CkByteData.appendFileW

`Chilkat 11.7.0 · tcl · CkByteData · appendFileW · method`

```tcl
# path is a utf-16 string

set retBool [CkByteData_appendFileW $this $path]
```

Opens a file for binary read, appends the file contents, and closes the file.

### CkByteData.appendInt

`Chilkat 11.7.0 · tcl · CkByteData · appendInt · method`

```tcl
# intValue is an integer

# littleEndian is a boolean

CkByteData_appendInt $this $intValue  $littleEndian
```

Appends a 32-bit signed integer (4 bytes) to the data already contained in the object. `littleEndian` determines whether the big endian or little endian byte ordering is used.

### CkByteData.appendRandom

`Chilkat 11.7.0 · tcl · CkByteData · appendRandom · method`

```tcl
# numBytes is an integer

CkByteData_appendRandom $this $numBytes
```

Appends `numBytes` random bytes to the data already contained within the object.

### CkByteData.appendShort

`Chilkat 11.7.0 · tcl · CkByteData · appendShort · method`

```tcl
# shortValue is an integer

# littleEndian is a boolean

CkByteData_appendShort $this $shortValue  $littleEndian
```

Appends a 16-bit signed integer (2 bytes) to the data already contained in the object. `littleEndian` determines whether the big endian or little endian byte ordering is used.

### CkByteData.appendStr

`Chilkat 11.7.0 · tcl · CkByteData · appendStr · method`

```tcl
# str is a string

CkByteData_appendStr $this $str
```

Appends a null-terminated string to the data, without including the terminating null.

### CkByteData.appendStrW

`Chilkat 11.7.0 · tcl · CkByteData · appendStrW · method`

```tcl
# str is a utf-16 string

# charset is a utf-16 string

CkByteData_appendStrW $this $str  $charset
```

To be documented soon...

### CkByteData.byteSwap4321

`Chilkat 11.7.0 · tcl · CkByteData · byteSwap4321 · method`

```tcl
CkByteData_byteSwap4321 $this
```

4321 byte swaps the data contained within the object.

### CkByteData.clear

`Chilkat 11.7.0 · tcl · CkByteData · clear · method`

```tcl
CkByteData_clear $this
```

Clears the CkByteData object of all data. The internal memory is deallocated. To clear without deallocating, call dropData instead.

### CkByteData.dropData

`Chilkat 11.7.0 · tcl · CkByteData · dropData · method · since 9.5.0.91`

```tcl
CkByteData_dropData $this
```

Sets the size of the data to 0. Does not deallocate the existing internal buffer. (This is a fast way of `clearing` the CkByteData object, such that the existing data remains in memory and is overwritten on the next append.)

If the SecureClear property is set to `1`, then the internal memory buffer is zeroed out before resetting the size to 0.

### CkByteData.encode

`Chilkat 11.7.0 · tcl · CkByteData · encode · method`

```tcl
# encoding is a string

# str is a CkString

CkByteData_encode $this $encoding  $str
```

Encodes binary data according to the encoding requested. The encoding can be specified as `hex`, `base64`, `url`, `quoted-printable`, `modBase64`, `base58`, `base32`, `qp-`, `url_rfc1738`, `url_rfc2396`, or `url_rfc3986`.

### CkByteData.encodeW

`Chilkat 11.7.0 · tcl · CkByteData · encodeW · method`

```tcl
# encoding is a utf-16 string

# str is a CkString

CkByteData_encodeW $this $encoding  $str
```

To be documented soon...

### CkByteData.ensureBuffer

`Chilkat 11.7.0 · tcl · CkByteData · ensureBuffer · method`

```tcl
# expectedNumBytes is an integer

set status [CkByteData_ensureBuffer $this $expectedNumBytes]
```

This method can be called to help optimize internal memory re-allocation. If, for example, many calls will be made to append data, and the total size is approximately known, then this method can be called to pre-allocate the internal buffer to the expected total size.

If the internal buffer is already larger than the `expectedNumBytes` then nothing happens. The existing internal buffer is kept.

Returns 1 for success, 0 for failure.

### CkByteData.getByte

`Chilkat 11.7.0 · tcl · CkByteData · getByte · method`

```tcl
# byteIndex is an integer

set retByte [CkByteData_getByte $this $byteIndex]
```

Returns the Nth byte of the binary data. The 1st byte is at index 0.

### CkByteData.getChar

`Chilkat 11.7.0 · tcl · CkByteData · getChar · method`

```tcl
# byteIndex is an integer

set retChar [CkByteData_getChar $this $byteIndex]
```

Returns the Nth byte of the binary content as a `char`. The 1st byte is at index 0.

### CkByteData.getData

`Chilkat 11.7.0 · tcl · CkByteData · getData · method`

```tcl
set binary_data [CkByteData_getData $this]
```

Returns a pointer to the internal buffer. Be careful with this method because if additional data is appended, the data within the object may be relocated and the pointer may cease to be valid.

### CkByteData.getDataAt

`Chilkat 11.7.0 · tcl · CkByteData · getDataAt · method`

```tcl
# byteIndex is an integer

set binary_data [CkByteData_getDataAt $this $byteIndex]
```

Same as getData, except it gets a pointer to the data at a byte offset. (0 = the start of buffer)

### CkByteData.getEncodedW

`Chilkat 11.7.0 · tcl · CkByteData · getEncodedW · method`

```tcl
# encoding is a utf-16 string

set utf16_text [CkByteData_getEncodedW $this $encoding]
```

The utf-16 version of getEncoded.

### CkByteData.getInt

`Chilkat 11.7.0 · tcl · CkByteData · getInt · method`

```tcl
# byteIndex is an integer

set retInt [CkByteData_getInt $this $byteIndex]
```

Returns the 4-byte integer located at a specific byte index.

### CkByteData.getRange

`Chilkat 11.7.0 · tcl · CkByteData · getRange · method`

```tcl
# byteIndex is an integer

# numBytes is an integer

set binary_data [CkByteData_getRange $this $byteIndex  $numBytes]
```

Copies a range of bytes to a separate internal memory buffer and returns the pointer to the bytes. The returned pointer is only valid while the object exists. Also, any subsequent calls to getRange, getRangeStr, or to_s will invalidate the buffer.

### CkByteData.getSize

`Chilkat 11.7.0 · tcl · CkByteData · getSize · method`

```tcl
set retInt [CkByteData_getSize $this]
```

Returns the number of bytes in the data buffer.

### CkByteData.is7bit

`Chilkat 11.7.0 · tcl · CkByteData · is7bit · method`

```tcl
set retBool [CkByteData_is7bit $this]
```

Returns `1` if all the bytes are in the range 0x00 to 0x7F.

### CkByteData.loadFile

`Chilkat 11.7.0 · tcl · CkByteData · loadFile · method`

```tcl
# path is a string

set retBool [CkByteData_loadFile $this $path]
```

Equivalent to clear() followed by appendFile().

### CkByteData.loadFileW

`Chilkat 11.7.0 · tcl · CkByteData · loadFileW · method`

```tcl
# path is a utf-16 string

set retBool [CkByteData_loadFileW $this $path]
```

To be documented soon...

### CkByteData.pad

`Chilkat 11.7.0 · tcl · CkByteData · pad · method`

```tcl
# blockSize is an integer

# paddingScheme is an integer

CkByteData_pad $this $blockSize  $paddingScheme
```

Pads the data to a multiple of the `blockSize` using a cryptographic padding scheme specified by `paddingScheme`. The possible integer values for `paddingScheme` are the same as those listed for the PaddingScheme property of the CkCrypt2 class.

### CkByteData.removeChunk

`Chilkat 11.7.0 · tcl · CkByteData · removeChunk · method`

```tcl
# startIndex is an integer

# numBytes is an integer

CkByteData_removeChunk $this $startIndex  $numBytes
```

Removes (discards) a range from the data.

### CkByteData.replaceChar

`Chilkat 11.7.0 · tcl · CkByteData · replaceChar · method`

```tcl
# existingByteValue is a byte

# replacementByteValue is a byte

CkByteData_replaceChar $this $existingByteValue  $replacementByteValue
```

Replaces all occurrences of `existingByteValue` with `replacementByteValue`.

### CkByteData.saveFile

`Chilkat 11.7.0 · tcl · CkByteData · saveFile · method`

```tcl
# path is a string

set retBool [CkByteData_saveFile $this $path]
```

Saves the byte data to a file. If the file already exists, it will be overwritten.

### CkByteData.saveFileW

`Chilkat 11.7.0 · tcl · CkByteData · saveFileW · method`

```tcl
# path is a utf-16 string

set retBool [CkByteData_saveFileW $this $path]
```

To be documented soon...

### CkByteData.shorten

`Chilkat 11.7.0 · tcl · CkByteData · shorten · method`

```tcl
# numBytes is an integer

CkByteData_shorten $this $numBytes
```

Discards N bytes from the end of the data.

### CkByteData.to_ws

`Chilkat 11.7.0 · tcl · CkByteData · to_ws · method`

```tcl
# charset is a string

set utf16_text [CkByteData_to_ws $this $charset]
```

To be documented soon...

### CkByteData.unpad

`Chilkat 11.7.0 · tcl · CkByteData · unpad · method`

```tcl
# blockSize is an integer

# paddingScheme is an integer

CkByteData_unpad $this $blockSize  $paddingScheme
```

Unpads the data from a multiple of the `blockSize` to the original data size using a cryptographic padding scheme specified by `paddingScheme`. The possible integer values for `paddingScheme` are the same as those listed for the PaddingScheme property of the CkCrypt2 class.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `append` | method | before 11.6.1 | — |
| `appendRange` | method | before 11.6.1 | — |
| `beginsWith` | method | before 11.6.1 | — |
| `equals` | method | before 11.6.1 | — |
| `findBytes` | method | before 11.6.1 | — |
| `getBytes` | method | before 11.6.1 | — |
| `preAllocate` | method | before 11.6.1 | — |

## Related classes

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

