本文整理汇总了C#中IByteSource.GetBytes方法的典型用法代码示例。如果您正苦于以下问题:C# IByteSource.GetBytes方法的具体用法?C# IByteSource.GetBytes怎么用?C# IByteSource.GetBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IByteSource
的用法示例。
在下文中一共展示了IByteSource.GetBytes方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseDataset
private void ParseDataset(IByteSource source, object state) {
try {
_result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone() && _result == DicomReaderResult.Processing) {
if (_state == ParseState.Tag) {
source.Mark();
if (!source.Require(4, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
ushort group = source.GetUInt16();
ushort element = source.GetUInt16();
DicomPrivateCreator creator = null;
if (group.IsOdd() && element > 0x00ff) {
string pvt = null;
uint card = (uint)(group << 16) + (uint)(element >> 8);
if (_private.TryGetValue(card, out pvt))
creator = Dictionary.GetPrivateCreator(pvt);
}
_tag = new DicomTag(group, element, creator);
if (_stop != null && _tag.CompareTo(_stop) >= 0) {
_result = DicomReaderResult.Stopped;
return;
}
_state = ParseState.VR;
}
while (_state == ParseState.VR) {
if (_tag == DicomTag.Item || _tag == DicomTag.ItemDelimitationItem || _tag == DicomTag.SequenceDelimitationItem) {
_vr = DicomVR.NONE;
_state = ParseState.Length;
break;
}
if (IsExplicitVR) {
if (!source.Require(2, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
byte[] bytes = source.GetBytes(2);
string vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
try {
_vr = DicomVR.Parse(vr);
} catch {
// unable to parse VR
_vr = DicomVR.UN;
}
} else {
DicomDictionaryEntry entry = Dictionary[_tag];
if (entry != null) {
if (entry == DicomDictionary.UnknownTag)
_vr = DicomVR.UN;
else if (entry.ValueRepresentations.Contains(DicomVR.OB) && entry.ValueRepresentations.Contains(DicomVR.OW))
_vr = DicomVR.OW; // ???
else
_vr = entry.ValueRepresentations.FirstOrDefault();
}
}
if (_vr == null)
_vr = DicomVR.UN;
_state = ParseState.Length;
if (_vr == DicomVR.UN) {
if (_tag.Element == 0x0000) {
// Group Length to UL
_vr = DicomVR.UL;
break;
} else if (IsExplicitVR) {
break;
}
}
if (_tag.IsPrivate) {
if (_tag.Element != 0x0000 && _tag.Element <= 0x00ff && _vr == DicomVR.UN)
_vr = DicomVR.LO; // force private creator to LO
}
}
while (_state == ParseState.Length) {
if (_tag == DicomTag.Item || _tag == DicomTag.ItemDelimitationItem || _tag == DicomTag.SequenceDelimitationItem) {
if (!source.Require(4, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
_length = source.GetUInt32();
_state = ParseState.Value;
break;
}
//.........这里部分代码省略.........
示例2: IsPrivateSequenceBad
private bool IsPrivateSequenceBad(IByteSource source) {
source.Mark();
try {
var group = source.GetUInt16();
var element = source.GetUInt16();
var tag = new DicomTag(group, element);
var length = source.GetUInt32();
group = source.GetUInt16();
element = source.GetUInt16();
tag = new DicomTag(group, element);
byte[] bytes = source.GetBytes(2);
string vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
try {
DicomVR.Parse(vr);
return !_explicit;
} catch {
// unable to parse VR
if (_explicit)
return true;
}
} finally {
source.Rewind();
}
return false;
}
示例3: ParseVR
private bool ParseVR(IByteSource source)
{
while (this.parseStage == ParseStage.VR)
{
if (this._tag == DicomTag.Item || this._tag == DicomTag.ItemDelimitationItem
|| this._tag == DicomTag.SequenceDelimitationItem)
{
this._vr = DicomVR.NONE;
this.parseStage = ParseStage.Length;
break;
}
if (this.isExplicitVR)
{
if (!source.Require(2))
{
this.result = DicomReaderResult.Suspended;
return false;
}
source.Mark();
var bytes = source.GetBytes(2);
var vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
if (string.IsNullOrWhiteSpace(vr))
{
if (this._entry != null)
{
this._vr = this._entry.ValueRepresentations.FirstOrDefault();
}
}
else if (!DicomVR.TryParse(vr, out this._vr))
{
// unable to parse VR; rewind VR bytes for continued attempt to interpret the data.
this._vr = DicomVR.Implicit;
source.Rewind();
}
}
else
{
if (this._entry != null)
{
if (this._entry == DicomDictionary.UnknownTag)
{
this._vr = DicomVR.UN;
}
else if (this._entry.ValueRepresentations.Contains(DicomVR.OB)
&& this._entry.ValueRepresentations.Contains(DicomVR.OW))
{
this._vr = DicomVR.OW; // ???
}
else
{
this._vr = this._entry.ValueRepresentations.FirstOrDefault();
}
}
}
if (this._vr == null)
{
this._vr = DicomVR.UN;
}
this.parseStage = ParseStage.Length;
if (this._vr == DicomVR.UN)
{
if (this._tag.Element == 0x0000)
{
// Group Length to UL
this._vr = DicomVR.UL;
break;
}
if (this.isExplicitVR)
{
break;
}
}
if (this._tag.IsPrivate)
{
if (this._tag.Element != 0x0000 && this._tag.Element <= 0x00ff && this._vr == DicomVR.UN)
{
this._vr = DicomVR.LO; // force private creator to LO
}
}
}
return true;
}
示例4: IsPrivateSequenceBad
private static bool IsPrivateSequenceBad(IByteSource source, bool isExplicitVR)
{
source.Mark();
try
{
source.GetUInt16(); // group
source.GetUInt16(); // element
source.GetUInt32(); // length
source.GetUInt16(); // group
source.GetUInt16(); // element
var bytes = source.GetBytes(2);
var vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
DicomVR dummy;
if (DicomVR.TryParse(vr, out dummy)) return !isExplicitVR;
// unable to parse VR
if (isExplicitVR) return true;
}
finally
{
source.Rewind();
}
return false;
}
示例5: Preprocess
private static void Preprocess(
IByteSource source,
ref DicomFileFormat fileFormat,
ref DicomTransferSyntax syntax)
{
// mark file origin
source.Mark();
// test for DICM preamble
source.Skip(128);
if (source.GetUInt8() == 'D' && source.GetUInt8() == 'I' && source.GetUInt8() == 'C'
&& source.GetUInt8() == 'M')
{
fileFormat = DicomFileFormat.DICOM3;
}
// test for incorrect syntax in file meta info
do
{
if (fileFormat == DicomFileFormat.DICOM3)
{
// move milestone to after preamble
source.Mark();
}
else
{
// rewind to origin milestone
source.Rewind();
}
// test for file meta info
var group = source.GetUInt16();
if (@group > 0x00ff)
{
source.Endian = Endian.Big;
syntax = DicomTransferSyntax.ExplicitVRBigEndian;
@group = Endian.Swap(@group);
}
if (@group > 0x00ff)
{
// invalid starting tag
fileFormat = DicomFileFormat.Unknown;
source.Rewind();
break;
}
if (fileFormat == DicomFileFormat.Unknown)
{
fileFormat = @group == 0x0002
? DicomFileFormat.DICOM3NoPreamble
: DicomFileFormat.DICOM3NoFileMetaInfo;
}
var element = source.GetUInt16();
var tag = new DicomTag(@group, element);
// test for explicit VR
var vrt = Encoding.UTF8.GetBytes(tag.DictionaryEntry.ValueRepresentations[0].Code);
var vrs = source.GetBytes(2);
if (vrt[0] != vrs[0] || vrt[1] != vrs[1])
{
// implicit VR
syntax = syntax.Endian == Endian.Little
? DicomTransferSyntax.ImplicitVRLittleEndian
: DicomTransferSyntax.ImplicitVRBigEndian;
}
source.Rewind();
}
while (fileFormat == DicomFileFormat.Unknown);
if (fileFormat == DicomFileFormat.Unknown)
{
throw new DicomReaderException("Attempted to read invalid DICOM file");
}
// Adopt transfer syntax endianess to byte source.
source.Endian = syntax.Endian;
}
示例6: IsPrivateSequenceBad
private static bool IsPrivateSequenceBad(IByteSource source, bool isExplicitVR)
{
source.Mark();
try
{
// Skip "item" tags; continue skipping until length is non-zero (#223)
while (new DicomTag(source.GetUInt16(), source.GetUInt16()) == DicomTag.Item // group, element
& source.GetUInt32() == 0) // length (using & instead of && enforces RHS to be evaluated regardless of LHS)
{
}
source.GetUInt16(); // group
source.GetUInt16(); // element
var bytes = source.GetBytes(2);
var vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
DicomVR dummy;
if (DicomVR.TryParse(vr, out dummy)) return !isExplicitVR;
// unable to parse VR
if (isExplicitVR) return true;
}
finally
{
source.Rewind();
}
return false;
}