MCPcopy Index your code
hub / github.com/skip2/go-qrcode / encodeDataRaw

Method encodeDataRaw

encoder.go:322–370  ·  view source on GitHub ↗

encodeDataRaw encodes data in dataMode. The encoded data is appended to encoded.

(data []byte, dataMode dataMode, encoded *bitset.Bitset)

Source from the content-addressed store, hash-verified

320// encodeDataRaw encodes data in dataMode. The encoded data is appended to
321// encoded.
322func (d *dataEncoder) encodeDataRaw(data []byte, dataMode dataMode, encoded *bitset.Bitset) {
323 modeIndicator := d.modeIndicator(dataMode)
324 charCountBits := d.charCountBits(dataMode)
325
326 // Append mode indicator.
327 encoded.Append(modeIndicator)
328
329 // Append character count.
330 encoded.AppendUint32(uint32(len(data)), charCountBits)
331
332 // Append data.
333 switch dataMode {
334 case dataModeNumeric:
335 for i := 0; i < len(data); i += 3 {
336 charsRemaining := len(data) - i
337
338 var value uint32
339 bitsUsed := 1
340
341 for j := 0; j < charsRemaining && j < 3; j++ {
342 value *= 10
343 value += uint32(data[i+j] - 0x30)
344 bitsUsed += 3
345 }
346 encoded.AppendUint32(value, bitsUsed)
347 }
348 case dataModeAlphanumeric:
349 for i := 0; i < len(data); i += 2 {
350 charsRemaining := len(data) - i
351
352 var value uint32
353 for j := 0; j < charsRemaining && j < 2; j++ {
354 value *= 45
355 value += encodeAlphanumericCharacter(data[i+j])
356 }
357
358 bitsUsed := 6
359 if charsRemaining > 1 {
360 bitsUsed = 11
361 }
362
363 encoded.AppendUint32(value, bitsUsed)
364 }
365 case dataModeByte:
366 for _, b := range data {
367 encoded.AppendByte(b, 8)
368 }
369 }
370}
371
372// modeIndicator returns the segment header bits for a segment of type dataMode.
373func (d *dataEncoder) modeIndicator(dataMode dataMode) *bitset.Bitset {

Callers 2

encodeMethod · 0.95
TestSingleModeEncodingsFunction · 0.80

Calls 6

modeIndicatorMethod · 0.95
charCountBitsMethod · 0.95
AppendMethod · 0.80
AppendUint32Method · 0.80
AppendByteMethod · 0.80

Tested by 1

TestSingleModeEncodingsFunction · 0.64